Tested on DigitalOcean with Ubuntu 20.10 LTS
Put in a valid email and hostname where shown. Update DNS when you get an IP. Short TTL recommended.
The TLS provider for the neko service can be changed from stage
to prod
when ready.
#cloud-config | |
packages: | |
- docker.io | |
- docker-compose | |
write_files: | |
- path: /root/docker-compose.yaml | |
content: | | |
version: "3.0" | |
services: | |
neko: | |
image: nurdism/neko:firefox | |
restart: always | |
shm_size: "1gb" | |
ports: | |
- "59000-59100:59000-59100/udp" | |
environment: | |
DISPLAY: :99.0 | |
NEKO_PASSWORD: neko | |
NEKO_PASSWORD_ADMIN: admin | |
NEKO_BIND: :8080 | |
NEKO_EPR: 59000-59100 | |
labels: | |
- traefik.http.routers.neko.rule=Host(`YOUR_HOSTNAME`) | |
- traefik.http.services.neko.loadbalancer.server.port=8080 | |
- traefik.http.routers.neko.tls=true | |
# Change this to 'prod' after testing | |
- traefik.http.routers.neko.tls.certresolver=stage | |
traefik: | |
image: traefik:v2.3 | |
command: | |
- --providers.docker | |
- "--certificatesResolvers.stage.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory" | |
- "--certificatesResolvers.stage.acme.email=YOUR_EMAIL" | |
- "--certificatesResolvers.stage.acme.storage=acme-stage.json" | |
- "--certificatesResolvers.stage.acme.tlsChallenge=true" | |
- "--entrypoints.websecure.address=:443" | |
- "--entrypoints.web.address=:80" | |
- "--certificatesResolvers.prod.acme.email=YOUR_EMAIL" | |
- "--certificatesResolvers.prod.acme.storage=acme-prod.json" | |
- "--certificatesResolvers.prod.acme.tlsChallenge=true" | |
ports: | |
- "80:80" | |
- "443:443" | |
- "8080:8080" | |
volumes: | |
- /var/run/docker.sock:/var/run/docker.sock | |
runcmd: | |
- docker-compose -f /root/docker-compose.yaml up -d |