Metadata-Version: 2.1
Name: realnet
Version: 0.0.79
Summary: Realnet command line interface
Home-page: https://github.com/virtual-space/realnet
Author: Marko Laban
Author-email: marko.laban@l33tsystems.com
License: BSD
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: python-dotenv
Requires-Dist: boto3
Requires-Dist: Flask (==2.2.2)
Requires-Dist: SQLAlchemy (==1.4.23)
Requires-Dist: psycopg2-binary
Requires-Dist: sqlalchemy-serializer
Requires-Dist: shapely (==1.8.5)
Requires-Dist: GeoAlchemy2
Requires-Dist: Werkzeug
Requires-Dist: authlib
Requires-Dist: flask-cors
Requires-Dist: bootstrap-flask
Requires-Dist: requests
Requires-Dist: pygltflib
Requires-Dist: trimesh
Requires-Dist: scipy
Requires-Dist: Pillow (==9.4.0)
Requires-Dist: pillow-heif (==0.7.0)

# realnet

## Architecture
Coming soon

## Prerequisites
For now, before attempting to configure, make sure that you have:
1. a valid postgres database and an account that can manage creation and alteration of tables - you will need url, database name, username and password 
2. a valid AWS SQS url, AWS S3 url and AWS key and secret that allow write access to them
3. Replace each CHANGE_OTHERWISE_NO_SECURITY in your config/.env with a separate cryptographically secure hash - remember to always store this kind of information securely

optional:
4. A valid ChatGPT API Key


## How to run on linux/windows from source

The realnet server needs to be configured and running. How to do that can be found in the readme.md for https://github.com/virtual-space/realnet/
If you are on Windows, we suggest you use WSL2...

- Clone out the repo
```
git clone https://github.com/virtual-space/realnet/realnet.git
```

- Go to the repo root folder 
```
cd realnet
```

- In the repo root folder create an .env file with the following content:
```
REALNET_SERVER_HOST='0.0.0.0'
REALNET_SERVER_PORT='8080'

#API KEYS
REALNET_CHATGPT_API_KEY='sk-w32yourchatgptkeygoeshere'
REALNET_CHATGPT_API_URL='https://api.openai.com/v1/chat/completions'


# Local
REALNET_DB_USER='yourdbusername'
REALNET_DB_HOST='localhost'
REALNET_DB_PASS='CHANGE_OTHERWISE_NO_SECURITY'
REALNET_DB_PORT='5432'
REALNET_DB_NAME='realnet'
REALNET_URI='http://localhost:8080'
REALNET_REDIRECT_URI='http://localhost:4200/callback'
REALNET_MOBILE_REDIRECT_URI='io.realnet.app:/oauth2redirect'
REALNET_USERNAME='admin'
REALNET_PASSWORD='CHANGE_OTHERWISE_NO_SECURITY'
REALNET_EMAIL='admin@yourcompanydomain'
REALNET_SQS_URL=yourawssqsurl
REALNET_STORAGE_S3_BUCKET=yourrealnets3storagebucketname
REALNET_STORAGE_TYPE='s3'
REALNET_STORAGE_S3_KEY=yourrealnets3storagekey
REALNET_STORAGE_S3_SECRET=yourrealnets3storagesecret
REALNET_STORAGE_S3_REGION=yourrealnets3storageregion
# REALNET_BASE64_ENCODE_DATA='True'
REALNET_NAME='public'
REALNET_DB_TYPE=postgresql
REALNET_APP_SECRET='CHANGE_OTHERWISE_NO_SECURITY'
REALNET_USE_S3_UPLOAD_URL='True'
REALNET_TOKEN='[generated by realnet auth token]'
REALNET_CLIENT_KEY='[Retrieve by running command "realnet server initialize"]'
REALNET_CLIENT_SECRET='[Retrieve by running command "realnet server initialize"]'
REALNET_URL='[get from realnet server serve command or use 'https://realnet.io' for public]'
```

- run command
```
chmod 700 .env
```

- run the following commands:
```
python -m venv venv
. ./venv/bin/activate
python setup.py install
realnet server initialize
```


- finally to start realnet and see available commands, run the following command:
```
realnet server start
```

- for further info about the commands, run the following command:
```
realnet -h
```
## How to build a Docker image and run it locally
# TODO please validate and correct
```
docker build -t realnet:latest .
docker run -d -p 8080:8080 realnet:latest
```

## How to run on kubernetes via docker

deployment.yaml:
```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: realnet
spec:
  replicas: 1
  selector:
    matchLabels:
      app: realnet
  template:
    metadata:
      labels:
        app: realnet
    spec:
      containers:
        - name: realnet
          image: 'l33tsys/realnet'
          imagePullPolicy: "Always"
          ports:
            - containerPort: 8080
          envFrom:
            - configMapRef:
                name: realnet-config
```

configmap.yaml
```
apiVersion: v1
kind: ConfigMap
metadata:
  name: realnet-config
  labels:
    app: realnet
data:
  REALNET_SERVER_HOST: '0.0.0.0'
  REALNET_SERVER_PORT: '8080'
  # Local
  REALNET_DB_USER: 'postgres'
  REALNET_DB_HOST: 'localhost'
  REALNET_DB_PASS: 'CHANGE_OTHERWISE_NO_SECURITY'
  REALNET_DB_PORT: '5432'
  REALNET_DB_NAME: 'postgres'
  REALNET_URI: 'https://realnet.io'
  REALNET_REDIRECT_URI: 'https://www.realscape.io/callback'
  REALNET_MOBILE_REDIRECT_URI: 'io.realnet.app:/oauth2redirect'
  REALNET_USERNAME: 'admin'
  REALNET_PASSWORD: 'CHANGE_OTHERWISE_NO_SECURITY'
  REALNET_EMAIL: 'admin@yourcompanydomain'
  REALNET_SQS_URL: 'yourawssqsurl'
  REALNET_STORAGE_S3_BUCKET: yourrealnets3storagebucketname
  REALNET_STORAGE_TYPE: 's3'
  REALNET_STORAGE_S3_KEY: yourrealnets3storagekey
  REALNET_STORAGE_S3_SECRET: yourrealnets3storagesecret
  REALNET_STORAGE_S3_REGION: yourrealnets3storageregion
  REALNET_BASE64_ENCODE_DATA: 'True'
  REALNET_NAME: 'public'
  REALNET_DB_TYPE: postgresql
  REALNET_APP_SECRET: 'CHANGE_OTHERWISE_NO_SECURITY'
  REALNET_USE_S3_UPLOAD_URL: 'True'
```

service.yaml
```
apiVersion: v1
kind: Service
metadata:
  name: realnet
  annotations:
    external-dns.alpha.kubernetes.io/hostname: yourcompanydomain
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: yourlbcerturl
  labels:
    app: realnet
spec:
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 443
    targetPort: 8080
  selector:
   app: realnet
```

# installation notes (python setup.py | pip install)

TODO: Review if below still applies

You may need to manually install some dependencies. The install command should tell you what is missing.

The Cryptography module takes a long time to compile.

Below is an incomplete list of installation instructions for dependencies. If you're not doing this on a fresh installation, you should run `python setup.py install` or `pip install realnet` to see what you need first.

- Inside VENV
```
pip install --upgrade pip
pip install setuptools-rust
```
- Outside VENV
postgreSQL (pg_config is missing)
```
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql
```
c/c++ compilers (gcc/g++ is missing)
```
sudo apt update
sudo apt install build-essential
```
Optional Man pages
```
sudo apt-get install manpages-dev
```
To test the C & C++ compiler installations run these commands:
```
gcc --version
g++ --version
```
bluetooth dev tools (bluetooth/bluetooth.h is missing)
```
sudo apt-get install libbluetooth-dev
```
