This can be used to create a Docker server cluster for the Aether App using Flask, Aether API using FastAPI. ## Initialize ### Part 1 * Create directory and clone the Aether environment. ```bash sudo mkdir /srv/env sudo chown -R scott:scott /srv/env/ git clone https://scott_idem@bitbucket.org/oneskyit/one-sky-it-container-environment.git /srv/env/test_aether ``` ### Part 2 * Create links to needed for the srv/ directories. See the README.md file under srv/ for details. * Copy Let's Encrypt certificates to the conf/certs/ directory. See the README.md file under conf/certs/ for details. * Copy MariaDB database files to the srv/mariadb/ directory using rsync. The original files may need to be copied from the normal Arch Linux location (/var/lib/mysql) first and then possibly reset the root password. ```bash sudo rsync -vhr -progress /var/lib/mysql/ /srv/env/test_aether/srv/mariadb/ sudo rsync -vhrz scott@linode.oneskyit.com:/srv/env/test_aether/srv/mariadb/ /srv/env/test_aether/srv/mariadb/ sudo chown -R scott:scott /srv/env/test_aether/srv/mariadb/ ``` ### Part 3 * Create the environment settings file and place it under the root of the Docker Compose directory. Copy the .env.default file as a template. ```bash cp /srv/env/test_aether/.env /srv/env/test_aether/.env.bak cp /srv/env/test_aether/.env.default /srv/env/test_aether/.env ``` **/.env [very basic example]** The AE_CFG_ID and AE_APP_CFG_ID can be something generic (dev, test, prod a, prod b) when using Docker Compose. ```cnf # One Sky IT's Aether Framework and System OSIT_ENV=development # Aether general shared config options AE_CFG_ID=0 ## Aether API access and use ## Aether DB access and use AE_DB_PASSWORD="the password with $$ escape" ## Aether Redis access and use ## Aether SMTP access and use # Aether API specific config options (FastAPI) # Aether app specific config (Flask with Svelte) AE_APP_CFG_ID=0 KEY="The Value" ``` #### Part 4 - Still figuring things out... Update /etc/hosts with something like this. ```cnf 127.0.0.1 dev-api.oneskyit.com dev-app.oneskyit.com 127.0.0.1 dev-demo.oneskyit.com dev-businessgroup.oneskyit.com dev-ishlt.oneskyit.com ``` * Nothing in aether_flask_gunicorn_conf.py needs to be changed? * Nothing in aether_fastapi_gunicorn_conf.py needs to be changed? * Nothing in aether_api_config.py needs to be changed? * Nothing in aether_app_config.py needs to be changed? ## Manage Docker Compose Environment ```bash docker restart ae_api_dev docker restart ae_app_dev docker restart ae_mariadb_dev ``` ## Clone Svelte App(s) ### One Sky IT NPM library git clone https://scott_idem@bitbucket.org/oneskyit/one-sky-it-npm-library.git /srv/env/aether_npm_library ### Actual Svelte apps (note the branches) Clone: * git clone https://scott_idem@bitbucket.org/oneskyit/one-sky-it-app-svelte.git /srv/env/aether_xxx_yyy_svelte * git clone https://scott_idem@bitbucket.org/oneskyit/one-sky-it-app-svelte.git ~/OSIT_dev/aether_xxx_yyy_svelte Module groups: * aether_app_core_svelte * aether_app_mods_svelte * aether_app_mod_events_svelte Note: Will need to change branches. ```bash git branch --all git switch ae_core_dev git pull origin ae_core_dev git switch ae_mods_dev git pull origin ae_mods_dev git switch ae_mod_events_dev git pull origin ae_mod_events_dev git branch --all ``` Also... don't forget to npm update before you npm run build or dev. ### Native Electron app git clone https://scott_idem@bitbucket.org/oneskyit/one-sky-it-app-native.git /srv/env/aether_app_native sdfasdfasd git clone https://scott_idem@bitbucket.org/oneskyit/one-sky-it-container-environment.git /srv/env/test_aether --- ## More Notes ```bash ln -s /srv/http/dev_app.oneskyit.com /srv/env/test_aether/srv/aether_app_ln ln -s /srv/http/dev_fastapi.oneskyit.com /srv/env/test_aether/srv/aether_api_ln ln -s /mnt/data/speaker_ready/hosted_tmp /srv/env/test_aether/srv/hosted_tmp_ln ln -s /mnt/data/speaker_ready/hosted_files /srv/env/test_aether/srv/hosted_files_ln ls -lha /srv/env/test_aether/srv/aether_app_ln/ ls -lha /srv/env/test_aether/srv/aether_api_ln/ ls -lha /srv/env/test_aether/srv/hosted_tmp_ln/ ls -lha /srv/env/test_aether/srv/hosted_files_ln/ ```` ### Part 2 ```bash sudo ls -lha /var/lib/mysql/ ``` ## Common: * conf/ = All config files * logs/ = All log files * srv/ = All files and data directories that are being served up in some way. * srv/hosted_files = All hashed hosted files (/mnt/data_drive/srv/data/osit_app/hosted_files_dev/) * srv/static_files = All static files * --- * srv/aether_api = Aether API * srv/aether_app = Aether App * --- * srv/html_php = The default HTML and PHP directory * srv/oneskyit_site = One Sky IT, LLC main site * --- * srv/mailman2 = All Mailman2 files * srv/mariadb = All MariaDB database files * srv/nextcloud = All Nextcloud app files ## Servics: nginx php gunicorn mariadb phpmyadmin redis postfix? mailman? Nextcloud??? Syncthing??? restic??? memcached??? ## Setup ## Check for in use services and ports Note that the Aether FastAPI will hang if redis is not found. sudo systemctl status mariadb.services sudo systemctl status nginx.service sudo systemctl status php-fpm.service sudo systemctl status postfix.service sudo systemctl status redis.service ### Create links to Aether API and app directories Make sure the docker-compose.yml file is updated with the correct paths. ln -s /home/scott/OSIT_dev/aether_api_fastapi /home/scott/OSIT_dev/aether_container_env/srv/aether_api_link ln -s /home/scott/OSIT_dev/aether_app /home/scott/OSIT_dev/aether_container_env/srv/aether_app_link ln -s /mnt/data_drive/srv/data/osit_app/hosted_files /home/scott/OSIT_dev/aether_container_env/srv/hosted_files_link ln -s /mnt/data_drive/srv/data/osit_app/hosted_files_dev /home/scott/OSIT_dev/aether_container_env/srv/hosted_files_dev_link ln -s /mnt/data_drive/srv/data/osit_app/hosted_tmp /home/scott/OSIT_dev/aether_container_env/srv/hosted_tmp_link ln -s /mnt/data_drive/srv/data/osit_app/hosted_tmp_dev /home/scott/OSIT_dev/aether_container_env/srv/hosted_tmp_dev_link