Hello
currently my plan is to switch away from google drive and nextcloud seems to be by far the best option.
I wish to use Docker, to have it done in a way I can deploy it on machines without the hassle of setting everything up again (If I need to move or upgrade nextcloud in the future).
The base system I use is Ubuntu 20.04 LTS.
The whole thing shall run behind a reverse proxy, so I can use the “insecure” deployment.
Basically it can mainly be the the provided template:
I clone this into /opt/Nextcloud and create the directories “/data” and “/postgres_db_data”.
Also I modify the upstream within the “nginx.conf”. That’s basically it. (The reverse-proxy listens on port 81 → will be changed)
This is my docker-compose file:
version: '3.9'
services:
app:
image: nextcloud:fpm-alpine
container_name: nextcloud-app
restart: unless-stopped
volumes:
- nextcloud-volume:/var/www/html
- /opt/Nextcloud/data:/var/www/html/data
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
networks:
- nextcloud
environment:
- NEXTCLOUD_TRUSTED_DOMAINS='localhost'
- NEXTCLOUD_ADMIN_USER=admin
- NEXTCLOUD_ADMIN_PASSWORD=<password>
- POSTGRES_HOST=nextcloud-postgres
- REDIS_HOST=nextcloud-redis
env_file:
- db.env
depends_on:
- postgres_db
- redis
web:
build: ./web
container_name: nextcloud-web
restart: unless-stopped
ports:
- 127.0.0.1:81:80
volumes:
- nextcloud-volume:/var/www/html:ro
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
networks:
- nextcloud
depends_on:
- app
- cron
- postgres_db
cron:
image: nextcloud:fpm-alpine
container_name: nextcloud-cron
restart: unless-stopped
volumes:
- nextcloud-volume:/var/www/html
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
networks:
- nextcloud
entrypoint: /cron.sh
depends_on:
- postgres_db
- redis
postgres_db:
image: postgres:alpine
container_name: nextcloud-postgres
restart: unless-stopped
volumes:
- nextcloud-volume:/var/www/html
- /opt/Nextcloud/postgres_db_data:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
networks:
- nextcloud
env_file:
- db.env
redis:
image: redis:alpine
container_name: nextcloud-redis
networks:
- nextcloud
restart: unless-stopped
collabora:
image: collabora/code
container_name: nextcloud-collabora
restart: unless-stopped
networks:
- nextcloud
ports:
- 9980:9980
environment:
- domain=nextcloud.example.url
- VIRTUAL_HOST=office.example.url
- VIRTUAL_PORT=9980
- VIRTUAL_PROTO=https
- dictionaries='de_DE en_GB en_US nl_NL'
- extra_params='--o:ssl.enable=false'
cap_add:
- MKNOD
depends_on:
- app
tty: true
coturn:
image: instrumentisto/coturn
container_name: nextcloud-coturn
restart: unless-stopped
ports:
- 3478:3478/tcp
- 3478:3478/udp
networks:
- nextcloud
command:
- -n
- --log-file=stdout
- --min-port=49160
- --max-port=49200
- --realm=https://nextcloud.example.url
- --use-auth-secret
- --static-auth-secret=<password>
depends_on:
- app
volumes:
nextcloud-volume:
networks:
nextcloud:
The plan was, that I just execute that and have a running Nextcloud instance.
But I can’t get it to work. All I get in the postgres logs is:
ERROR: relation “oc_migrations” already exists
STATEMENT: CREATE TABLE oc_migrations (app VARCHAR(255) NOT NULL, version VARCHAR(255) NOT NULL, PRIMARY KEY(app, version))
The Webinterface shows the same:
With a little searching I found:
He mentions the postgres db gets “killed” before the database gets first initialized.
In fact I tried to start the containers in a lot of different orders. But it makes no difference.
Have you guys any clue as what to try next? All ideas are very appreciated.
Thank you guys!