104 lines
2.3 KiB
Markdown
104 lines
2.3 KiB
Markdown
# NextCloud Container
|
|
|
|
## 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,
|
|
which is running as a rootful container to bind to ports 80 and 443.
|
|
|
|
1. Create a user for the NextCloud application (eg. nextcloud)
|
|
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.
|
|
|
|
```
|
|
# /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
|
|
```
|