- DigitalOcean account
- DockerHub DockerHub account
- Domain name (could be any provider)
- Your domain is pointing to DigitalOcean DNS servers
- Wildcard DNS record for your domain (*.your_domain.com)
- Traefik as a reverse proxy
- Let's Encrypt for SSL certificates
- Traefik Dashboard for monitoring
- PostgreSQL for database
- pgAdmin for database management
- Docker for containerization
- Docker Compose for container orchestration
- DigitalOcean for cloud hosting
- Check if all containers are running with
docker ps -a
- Check if all env variables are set in .env file and are correct
- Check if docker compose has read all environment variables with
docker-compose config
- Check the logs of the individual container with
docker logs <container_name>
ordocker logs --follow <container_name>
- Did you remember to add your domain to the DigitalOcean DNS servers?
- Did you remember to add a wildcard DNS record for your domain?
- Did you remember to create the acme.json file and set the correct permissions?
- Run your docker compose file with
docker-compose up
(without the -d flag) and check the output logs for errors
git clone https://github.com/tysker/3sem-traefik-setup-remote.git
# Lets-encrypt - Digital Ocean
PROVIDER=digitalocean
EMAIL=<your_email>
ACME_STORAGE=/etc/traefik/acme/acme.json
DO_AUTH_TOKEN=<your_digitalocean_token>
# Traefik
TRAFIK_DOMAIN=traefik.<your_domain>
DASHBOARD_AUTH=<your_dashboard_auth>
# API
API_DOMAIN=<your_api_domain>
# Postgres
POSTGRES_USER=<your_postgres_user>
POSTGRES_PASSWORD=<your_postgres_password>
# PgAdmin
PGADMIN_DOMAIN=pgadmin.<your_domain>
PGADMIN_DEFAULT_EMAIL=<your_pgadmin_email>
PGADMIN_DEFAULT_PASSWORD=<your_pgadmin_password>
# Watchtower
REPO_PASS=<your_dockerhub_token>
REPO_USER=<your_dockerhub_username>
- To generate a digital ocean token, go to DigitalOcean and create a new token.
mkdir ./acme
touch ./acme/acme.json
chmod 600 ./acme
chmod 600 ./acme/acme.json
echo $(htpasswd -nb <your_username> <your_password>) | sed -e s/\\$/\\$\\$/g
docker-compose up -d
docker-compose down
traefik.<your_domain>
<your_domain>/<your_api_path> (example: api.3sem.dk/api or restapi.3sem.dk/api)
(-v) // remove volumes
docker-compose down -v
sudo rm -rf ./data
sudo rm -rf ./pgadmin-data