nextcloud-container/README.md

104 lines
2.3 KiB
Markdown
Raw Permalink Normal View History

# Nextcloud Container
2022-09-10 19:52:59 +00:00
## Running in a local development environment
### With traefik
This is done to because step closer to what a typical production deployment
looks like.
1. Create a web network, if it doesn't exist:
```
podman network exist web || podman network create web
```
2. Start traefik, if it isn't already running:
```
cd /path/to/traefik_project
podman-compose up -d
```
3. Copy the traefix router & service configuration
```
cd /path/to/nextcloud_project
cp examples/nc.toml /path/to/traefik_project/conf.d/
```
4. Start nextcloud
```
podman-compose up -d
```
5. Access at http://nc.localhost:8080
## Backing up the database
```
podman-compose exec nc-db mysqldump nextcloud | gzip -9 > nextcloud.sql.gz
```
## Production deployments
Rootless container for Nextcloud with the frontend being provided by Traefik,
2022-09-10 19:52:59 +00:00
which is running as a rootful container to bind to ports 80 and 443.
1. Create a user for the Nextcloud application (eg. nextcloud)
2022-09-10 19:52:59 +00:00
2. Enable linger for the user
3. Create the web network if it doesn't exist
```
sudo -u nextcloud podman network exists web || sudo -u nextcloud podman network create web
```
4. Deploy traefik configuration for the application, eg.
```
DEST_DIR=$(sudo podman volume inspect --format "{{.Mountpoint}}" traefik_config)
sudo cp /path/to/nextcloud/examples/nc.toml "${DEST_DIR}/"
sudo sed -i 's/nc\.localhost/HOSTNAME/g' "${DEST_DIR}/nc.toml"
sudo sed -i 's/http:\/\/nextcloud/http:\/\/localhost:9000/' "${DEST_DIR}/nc.toml"
```
5. Deploy a podman-compose configuration file, eg.
```
# ~/.config/containers/compose/projects/nextcloud
COMPOSE_PROJECT_DIR=/home/nextcloud/.../nc/
COMPOSE_FILE="container-compose.yml container-compose.prod.yml"
COMPOSE_PATH_SEPARATOR=:
COMPOSE_PROJECT_NAME=nc
```
6. Deploy a systemd service file for Nextcloud, eg.
2022-09-10 19:52:59 +00:00
```
# /etc/systemd/user/nextcloud.service
[Unit]
Description=Nextcloud Rootless Pod
[Service]
User=nextcloud
Type=simple
EnvironmentFile=%h/.config/containers/compose/projects/nc.env
ExecStartPre=-podman-compose up --no-start
ExecStartPre=/usr/bin/podman pod start pod_nc
ExecStart=podman-compose wait
ExecStop=/usr/bin/podman pod stop pod_nc
```
7. Reload systemd units
8. Deploy any necessary environment secret to the `.env` file, eg.
* `MARIADB_PASSWORD`
* `NC_TRUSTED_DOMAINS`
9. Start
```
sudo -u nextcloud systemd --user enable --now nextcloud.service
```