-
Notifications
You must be signed in to change notification settings - Fork 1
Documentation
George Georgulas edited this page May 22, 2020
·
9 revisions
We're only concerned with documenting a few things:
- Using the MEGADocker Application itself with the standard configuration/options
- Configuring Manikins for common (but non-standard) use cases
- Compiling a single source of documentation for the individual applications created by Manikins
MEGADocker Application Requirements
- Install Docker on all of your hosts
-
Configure Docker Swarm
- Initialize your swarm by running
docker swarm initon any node. It is now the manager in a 1-node swarm. It will give you additional information about joining other nodes to your swarm. - Join additional manager nodes with
docker swarm join --manager - Join additional worker nodes with
docker swarm join --worker
- Initialize your swarm by running
-
Cloudflare Setup
- Create an account
- Use Cloudflare For DNS
- Create Subdomains
-
Generate an API Token with
Zone.Zone Settings,Zone.Zone, andZone.DNSprivileges
- Forward Network Ports To Your Swarm - this is far beyond the scope of this (or any) document, but fundamentally you will want to have a DHCP reservation in your router (or static local IP address) for one of your manager nodes at each WAN IP address. You must then forward TCP ports
80,443, and8080to that host. Check documentation for your router (or beg your network administrator) to find out more about your particular process.- If you can't use
80,443, or8080for some reason, you can change those ports in thetraefikservice of your Mob's.ymlfile. Doing this will require you to explicitly declare the port of your service when you connect to it and is not recommended for many reasons. You must update the following yml entries:services > traefik > portsservices > traefik > command > - '--entrypoints.plainhttp.address=:'services > traefik > command > - '--entrypoints.encryptedhttp.address=:'services > traefik > deploy > labels - 'traefik.http.services.traefik.loadbalancer.server.port='
- If you can't use
- Launch application
- Select your optional services from the list on the left. Grayed-out services are mandatory (core services) for MEGADocker to run.
- Fill in your settings in the list on the right. When they are validated, the light at the right end of each row will turn green. When all of your settings are validated, the green light at the top-right corner will turn green and the Download button at the bottom will activate. Don't close this window unless you are certain your settings are correct.
- Download your
.zipfile and unzip it in a location on a manager node where you want to store your data.
- From the directory you unzipped, run
./launchstack.shto test your Mob. If everything was configured correctly, your swarm will download the required docker images and create the services you chose. - You can use
docker service lsto monitor the status of your Mob. You will still be using a staging environment certificate from Let's Encrypt, so your services may require you to accept a certificate manually in your web browser. Once every service spins up correctly (and stays up), runcat traefik/acme.json && ls -GRal traefik/sslto verify that you have successfully generated staging certificates and outputting them into discrete files.
- Once you have verified that your Let's Encrypt staging certificates are there, we can set Traefik to generate trusted production certificates. Run
./stopstack.sh, and then edit your.ymlfile's entry forservices > traefik > command > - '--certificatesresolvers.cloudflarecerts.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory'to read as- '--certificatesresolvers.cloudflarecerts.acme.caserver=https://acme-v02.api.letsencrypt.org/directory', then run./launchstack.shto generate your trusted certificates.`
- Duplicati Manikin (Backups)
- Dynamic DNS
- GitLab (not implemented yet)
- Swarmpit Manikin (Docker Swarm GUI)
- LDAP Manikin (Authentication)
- OpenLDAP
- [Authelia]
- [phpMyLDAPAdmin]
- Traefik Manikin (Reverse Proxy)
- Baby Buddy (not implemented yet)
- Calibre (not implemented yet)
- Drupal
- ELK (not implemented yet)
- Ghost
- Grocy
- Heimdall
- Kanboard
- Ledger (not implemented yet)
- MediaCenter (not implemented yet)
- NextCloud (not implemented yet)
- Nginx
- Pihole
- Portainer
- PrivateBin (not implemented yet)
- RocketChat
- Visualizer
- VSCode (not implemented yet)
- WordPress