Compare commits
15 Commits
678b7591f9
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 4f5a75d936 | |||
| e79e0f35de | |||
| b703025d4c | |||
| 1d187a320c | |||
| 1de4cce8b3 | |||
| 97b1a3986f | |||
| 351c121b41 | |||
| 498e73be95 | |||
| a058cd4215 | |||
| 504fdb990b | |||
| cf830bc4f1 | |||
| 0a7be6b597 | |||
| cfee6f7302 | |||
| b4711953bc | |||
| 4d40d4b06c |
@@ -1,3 +1,11 @@
|
|||||||
|
# docker-compose
|
||||||
|
These are most of the docker-compose.yml files I use (with secrets removed, of
|
||||||
|
course). Technology hates me just often enough that I have to keep multiple
|
||||||
|
backups of everything because my shit gets rocked so often. :D
|
||||||
|
|
||||||
|
See [[Table-of-Services.md]] for what each of these does, as well as seeing what
|
||||||
|
I've discarded because it sucks (or just isn't for me).
|
||||||
|
|
||||||
## Named bind mounts
|
## Named bind mounts
|
||||||
Managing volumes that need to be shared within a config is easier if you can use names with bind mounts:
|
Managing volumes that need to be shared within a config is easier if you can use names with bind mounts:
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
This file is updated in my Obsidian vault, and then exported to `tangent/docker-compose` on my Gitea server.
|
||||||
|
So, me, reading this, UPDATE IT THERE.
|
||||||
|
|
||||||
|
| Service | In-Use | Purpose |
|
||||||
|
| --------------------- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| audiobookhself | ✅ https://audiobookshelf.tangentfox.com/ | Organizing audiobooks, playing them, and providing them through RSS feed(s) for convenient access. While the software supports multiple users very well afaik, due to costs, this is mostly for my own personal use. May not survive power failures. |
|
||||||
|
| calibre-web-automated | ✅ https://calibre.tangentfox.com/ | Organizing, editing, and reading ebooks. While it does *technically* support multiple users, the way things are handled is mostly global, so it really only works for a single user with edit permissions - or full trust. Family-only access. |
|
||||||
|
| cosmos-server | ✅ https://cosmos.tangentfox.com/ | Supposed to be an all-in-one selfhosting management system. I use it as a GUI for reverse proxying and monitoring my services. In fact, I run everything *outside* of it first, and keep compose files around to not rely on it solely. |
|
||||||
|
| gitea | ✅ https://gitea.tangentfox.com/ | Very fast and small footprint git-based code server. I use this to sync data & share code. Managing many users would be difficult, so sadly I have to keep this locked down. |
|
||||||
|
| immich | ✅ https://immich.tangentfox.com/ | A full replacement for Google Photos, with nearly the same feature set at the same quality, but much safer. Unfortunately, only meant to be used with a small pool of trusted users by design and ballooning costs to run a larger system, so this is family-only. |
|
||||||
|
| mediatracker | 🛑 | I was looking for a way to track *all* media consumption. Unfortunately, this app didn't save its data according to its instructions, so I abandoned it. It also didn't have a method for adding custom entries or editing metadata, so you are beholden to databases centralized managed. 😬 |
|
||||||
|
| miniflux | ✅ https://miniflux.tangentfox.com/ | A minimal and privacy-protecting feed reader. Unfortunately, not the most stable or compatible (largely due to companies making subscriptions less accessible). Family-only. May not survive power failure. :\\ |
|
||||||
|
| nextcloud | ✅ https://nextcloud.tangentfox.com/ | Private cloud storage. I use it for me only because I cannot make my server reliable enough to be trusted with others' data, nor do I have adequate space. NextCloud has an extreme ability to be customized and extended, but I only use this for spreadsheets. It's worth trying to use, but has some problems with stability when you start extending it a lot. Support can be difficult as well. |
|
||||||
|
| peertube | ✅ https://peertube.tangentfox.com/ | The intent is to be a decentralized video sharing platform. I use it to store private backups of media, and synchronize with YouTube. Unfortunately, this makes it unsafe to have publicly available, so it's family-only now. :\( |
|
||||||
|
| vikunja | ✅ https://vikunja.tangentfox.com/ | A new task management app. By default, it supports anyone signing up, but I should not be trusted with this data, so I limit it to my use only for safety. :\( This gave me a yellow flag by failing to restore itself after a power failure, unlike most other services I have.. |
|
||||||
|
| wordpress | ✅ https://blog.tangentfox.com/ | Wordpress is an *okay* blog platform made by a bad company. I use it out of inertia and it best fitting my needs a long time ago. A long-term plan of mine is to replace it with something better, and simpler. Ideally, such a replacement will also allow me to give more access to others. |
|
||||||
|
| yamtrack | 🛑 | Was looking for a way to track media consumption. While better looking than mediatracker, it has the same flaws and adds a slower interface that is less useful. |
|
||||||
@@ -1,4 +1,15 @@
|
|||||||
# Audiobookshelf
|
# Audiobookshelf
|
||||||
|
**WARNING**: Audiobookshelf takes an extremely long time to be ready for
|
||||||
|
connections, with no indication of when it will be ready. You will get
|
||||||
|
continuous 502 Bad Gateway errors until it resolves.
|
||||||
|
|
||||||
Modified from official instructions: https://www.audiobookshelf.org/docs/#docker-compose-install
|
Modified from official instructions: https://www.audiobookshelf.org/docs/#docker-compose-install
|
||||||
|
|
||||||
**WARNING**: If you ever accidentally leave an old version of an Audiobookshelf database where a new version can see it, a restart may cause it to load the old database, and **its default behavior when this occurs is to delete every file it doesn't recognize**. Thankfully, I had backups, but I have to set up all of the metadata around this all over again now.
|
During initial setup, you will be asked to create a library. I just call it
|
||||||
|
"Books", use `/audiobooks` for the path, and leave everything else at default.
|
||||||
|
|
||||||
|
**WARNING**: If you ever accidentally leave an old version of an Audiobookshelf
|
||||||
|
database where a new version can see it, a restart may cause it to load the old
|
||||||
|
database, and **its default behavior when this occurs is to delete every file it
|
||||||
|
doesn't recognize**. Thankfully, I had backups, but I have to set up all of the
|
||||||
|
metadata around this all over again now.
|
||||||
|
|||||||
@@ -1,3 +1,10 @@
|
|||||||
|
# TODO set volume directories
|
||||||
|
# TODO set timezone (TZ)
|
||||||
|
|
||||||
|
# WARNING Audiobookshelf takes an extremely long time to be ready for
|
||||||
|
# connections, with no indication of when it will be ready. You will get
|
||||||
|
# continuous 502 Bad Gateway errors until it resolves.
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
audiobooks:
|
audiobooks:
|
||||||
driver: local
|
driver: local
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# Calibre Web Automated (CWA)
|
||||||
|
Modified from [official instructions](https://github.com/crocodilestick/Calibre-Web-Automated?tab=readme-ov-file#using-docker-compose-recommended).
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
# TODO set volume directories
|
||||||
|
# TODO set user/group IDs
|
||||||
|
# TODO set timezone (TZ)
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
config:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: /mnt/apple/calibre/config
|
||||||
|
ingest:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: /mnt/apple/calibre/ingest
|
||||||
|
library:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: /mnt/apple/calibre/library
|
||||||
|
plugins:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: /mnt/apple/calibre/plugins
|
||||||
|
|
||||||
|
services:
|
||||||
|
calibre-web-automated:
|
||||||
|
image: crocodilestick/calibre-web-automated:latest
|
||||||
|
container_name: calibre-web-automated
|
||||||
|
environment:
|
||||||
|
# Only change these if you know what you're doing
|
||||||
|
- PUID=1004
|
||||||
|
- PGID=1004
|
||||||
|
# Edit to match your current timezone https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
||||||
|
- TZ=America/Denver
|
||||||
|
# Hardcover API Key required for Hardcover as a Metadata Provider, get one here: https://docs.hardcover.app/api/getting-started/
|
||||||
|
- HARDCOVER_TOKEN=your_hardcover_api_key_here
|
||||||
|
# If your library is on a network share (e.g., NFS/SMB), disable WAL to reduce locking issues
|
||||||
|
# Accepts: true/false (default: false)
|
||||||
|
- NETWORK_SHARE_MODE=false
|
||||||
|
# Override the default port (8083) for the web server.
|
||||||
|
# Accepts any valid port number.
|
||||||
|
- CWA_PORT_OVERRIDE=8083
|
||||||
|
volumes:
|
||||||
|
# CW users migrating should stop their existing CW instance, make a copy of the config folder, and bind that here to carry over all of their user settings ect.
|
||||||
|
- config:/config
|
||||||
|
# This is an ingest dir, NOT a library one. Anything added here will be automatically added to your library according to the settings you have configured in CWA Settings page. All files placed here are REMOVED AFTER PROCESSING
|
||||||
|
- ingest:/cwa-book-ingest
|
||||||
|
# If you don't have an existing library, CWA will automatically create one at the bind provided here
|
||||||
|
- library:/calibre-library
|
||||||
|
# If you use calibre plugins, you can bind your plugins folder here to have CWA attempt to add them to its workflow (WIP)
|
||||||
|
# If you are starting with a fresh install, you also need to copy customize.py.json to the Calibre config volume above, in /path/to/config/folder/.config/calibre/customize.py.json, see the note below for more info
|
||||||
|
- plugins:/config/.config/calibre/plugins
|
||||||
|
# ports:
|
||||||
|
# # Change the first number to change the port you want to access the Web UI, not the second
|
||||||
|
# - 8083:8083
|
||||||
|
# If you set CWA_PORT_OVERRIDE to a port below 1024, you may need to uncomment the following line:
|
||||||
|
# cap_add:
|
||||||
|
# - NET_BIND_SERVICE
|
||||||
|
restart: unless-stopped
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
# Cosmos Cloud
|
# Cosmos Cloud
|
||||||
**WARNING**: A database is set up by the UI using a volume instead of a bind mount,
|
**WARNING**: A database is set up by the UI using a volume instead of a bind
|
||||||
so this setup is ***not*** self-contained.
|
mount, so this setup is ***not*** self-contained.
|
||||||
|
|
||||||
Host mode networking needs to be explicitly enabled in Docker Desktop on macOS.
|
Host mode networking needs to be explicitly enabled in Docker Desktop on macOS.
|
||||||
|
|
||||||
Newer docker compose versions will complain about the `version` directive, but it is kept for backwards compatibility.
|
Newer docker compose versions will complain about the `version` directive, but
|
||||||
|
it is kept for backwards compatibility.
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
# todo change data path
|
# TODO set volume directories
|
||||||
# todo change user and group IDs
|
# TODO set user/group IDs
|
||||||
|
|
||||||
version: "3"
|
version: "3"
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
gitea-data:
|
data:
|
||||||
driver: local
|
driver: local
|
||||||
driver_opts:
|
driver_opts:
|
||||||
type: none
|
type: none
|
||||||
@@ -26,7 +26,7 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- gitea
|
- gitea
|
||||||
volumes:
|
volumes:
|
||||||
- gitea-data:/data
|
- data:/data
|
||||||
- /etc/timezone:/etc/timezone:ro
|
- /etc/timezone:/etc/timezone:ro
|
||||||
- /etc/localtime:/etc/localtime:ro
|
- /etc/localtime:/etc/localtime:ro
|
||||||
# ports:
|
# ports:
|
||||||
|
|||||||
+2
-1
@@ -5,7 +5,8 @@ WARNING: Does not work with docker-compose.
|
|||||||
|
|
||||||
1. Edit `docker-compose.yml` to set directories and a database password.
|
1. Edit `docker-compose.yml` to set directories and a database password.
|
||||||
2. Create directories needed: library, database, model-cache
|
2. Create directories needed: library, database, model-cache
|
||||||
3. Run docker compose, create admin account, change instance settings before uploading!
|
3. Run docker compose, create admin account, change instance settings before
|
||||||
|
uploading!
|
||||||
|
|
||||||
## Major Version Upgrades / Breaking Changes
|
## Major Version Upgrades / Breaking Changes
|
||||||
Check the official docs: https://docs.immich.app/install/upgrading/
|
Check the official docs: https://docs.immich.app/install/upgrading/
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
# WARNING: Environment file doesn't work.
|
# TODO set volume directories
|
||||||
# While not strictly necessary, you should change PASSWORD.
|
# TODO change ALL_CAPS environment variables in all locations
|
||||||
|
# note: environment files won't work here
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
UPLOAD_LOCATION:
|
UPLOAD_LOCATION:
|
||||||
@@ -37,11 +38,11 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
TZ: America/Denver
|
TZ: America/Denver
|
||||||
IMMICH_VERSION: v2
|
IMMICH_VERSION: v2
|
||||||
DB_PASSWORD: PASSWORD
|
DB_PASSWORD: YOUR_PASSWORD
|
||||||
DB_USERNAME: postgres
|
DB_USERNAME: postgres
|
||||||
DB_DATABASE_NAME: immich
|
DB_DATABASE_NAME: immich
|
||||||
ports:
|
# ports:
|
||||||
- '2283:2283'
|
# - '2283:2283'
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
- database
|
- database
|
||||||
@@ -77,7 +78,7 @@ services:
|
|||||||
container_name: immich_postgres
|
container_name: immich_postgres
|
||||||
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
|
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_PASSWORD: PASSWORD
|
POSTGRES_PASSWORD: YOUR_PASSWORD
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
POSTGRES_DB: immich
|
POSTGRES_DB: immich
|
||||||
POSTGRES_INITDB_ARGS: '--data-checksums'
|
POSTGRES_INITDB_ARGS: '--data-checksums'
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# Jelu
|
||||||
|
Modified from [official instructions](https://github.com/bayang/jelu?tab=readme-ov-file#docker).
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
volumes:
|
||||||
|
config:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: /mnt/apple/jelu/config
|
||||||
|
database:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: /mnt/apple/jelu/database
|
||||||
|
images:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: /mnt/apple/jelu/images
|
||||||
|
imports:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: /mnt/apple/jelu/imports
|
||||||
|
|
||||||
|
services:
|
||||||
|
jelu:
|
||||||
|
image: wabayang/jelu
|
||||||
|
container_name: jelu
|
||||||
|
volumes:
|
||||||
|
- config:/config
|
||||||
|
- database:/database
|
||||||
|
- images:/files/images
|
||||||
|
- imports:/files/imports
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
# ports:
|
||||||
|
# - 11111:11111
|
||||||
|
restart: unless-stopped
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Miniflux
|
||||||
|
Modified from [official instructions](https://miniflux.app/docs/docker.html).
|
||||||
|
|
||||||
|
~~I commented out the stuff to create the initial user because I'm running this
|
||||||
|
behind Cosmos, where I can temporarily quarantine it from the wider internet
|
||||||
|
while configuring it.~~ Apparently, Miniflux made it so this is required, even
|
||||||
|
though documentation implies it's only optional. :D
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
# TODO set volume directories
|
||||||
|
# TODO change ALL_CAPS environment variables in all locations
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
postgres:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: /mnt/apple/miniflux/postgres
|
||||||
|
|
||||||
|
services:
|
||||||
|
miniflux:
|
||||||
|
image: miniflux/miniflux:latest
|
||||||
|
# ports:
|
||||||
|
# - "80:8080"
|
||||||
|
depends_on:
|
||||||
|
db:
|
||||||
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
- DATABASE_URL=postgres://miniflux:YOUR_DATABASE_PASSWORD@db/miniflux?sslmode=disable
|
||||||
|
- RUN_MIGRATIONS=1
|
||||||
|
- CREATE_ADMIN=1
|
||||||
|
- ADMIN_USERNAME=YOUR_USERNAME
|
||||||
|
- ADMIN_PASSWORD=YOUR_USER_PASSWORD
|
||||||
|
db:
|
||||||
|
image: postgres:18
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=miniflux
|
||||||
|
- POSTGRES_PASSWORD=YOUR_DATABASE_PASSWORD
|
||||||
|
- POSTGRES_DB=miniflux
|
||||||
|
volumes:
|
||||||
|
- postgres:/var/lib/postgresql
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "pg_isready", "-U", "miniflux"]
|
||||||
|
interval: 10s
|
||||||
|
start_period: 30s
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# NextCloud
|
||||||
|
I use an all-in-one image, which **is not *the* AIO or all-in-one image**. I
|
||||||
|
don't know why there's a project named that which adds a bunch of stuff and is
|
||||||
|
not actually all-in-one but it makes things confusing. :D
|
||||||
|
|
||||||
|
The only way I could get this working when I first started using Cosmos as a
|
||||||
|
reverse proxy was to use the CasaOS compose, so this is modified from that:
|
||||||
|
https://azukaar.github.io/cosmos-casaos-store/servapps/Nextcloud/docker-compose.yml
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Apparently, I should be using the instructions from https://hub.docker.com/_/nextcloud/
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
# TODO set volume directories
|
||||||
|
# TODO set user/group IDs
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
data:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: /mnt/apple/nextcloud/data
|
||||||
|
|
||||||
|
services:
|
||||||
|
nextcloud:
|
||||||
|
user: "1003:1003"
|
||||||
|
image: nextcloud:27.1.3
|
||||||
|
container_name: nextcloud
|
||||||
|
hostname: nextcloud
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
reservations:
|
||||||
|
memory: 512M
|
||||||
|
network_mode: bridge
|
||||||
|
# ports:
|
||||||
|
# - 10081:80/tcp
|
||||||
|
# - 10443:443/tcp
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- data:/var/www/html
|
||||||
+2
-1
@@ -5,6 +5,7 @@ Modified from official instructions: https://docs.joinpeertube.org/install/docke
|
|||||||
2. Generate `PEERTUBE_SECRET` using `openssl rand -hex 32`.
|
2. Generate `PEERTUBE_SECRET` using `openssl rand -hex 32`.
|
||||||
3. Create the volume directories needed: config, data, opendkim, postgres, redis
|
3. Create the volume directories needed: config, data, opendkim, postgres, redis
|
||||||
4. Launch from CLI docker compose.
|
4. Launch from CLI docker compose.
|
||||||
5. Search logs for "User password" (near the end) to find the generated password for the root account.
|
5. Search logs for "User password" (near the end) to find the generated password
|
||||||
|
for the root account.
|
||||||
|
|
||||||
Be careful setting up the instance initially. It's not as easy as it seems.
|
Be careful setting up the instance initially. It's not as easy as it seems.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# TODO change volumes to match local path(s)
|
# TODO set volume directories
|
||||||
# TODO change environment variables, make sure all instances match
|
# TODO change ALL_CAPS environment variables in all locations
|
||||||
# TODO To generate PeerTube secret, run: openssl rand -hex 32
|
# For PEERTUBE_SECRET, run : openssl rand -hex 32
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
config:
|
config:
|
||||||
@@ -26,7 +26,7 @@ volumes:
|
|||||||
driver_opts:
|
driver_opts:
|
||||||
type: none
|
type: none
|
||||||
o: bind
|
o: bind
|
||||||
device: /mnt/apple/peertube/postgres
|
device: /mnt/apple/peertube/postgresql
|
||||||
redis:
|
redis:
|
||||||
driver: local
|
driver: local
|
||||||
driver_opts:
|
driver_opts:
|
||||||
@@ -64,9 +64,9 @@ services:
|
|||||||
PEERTUBE_SMTP_TLS: false
|
PEERTUBE_SMTP_TLS: false
|
||||||
PEERTUBE_SMTP_DISABLE_STARTTLS: false
|
PEERTUBE_SMTP_DISABLE_STARTTLS: false
|
||||||
PEERTUBE_ADMIN_EMAIL: EMAIL_ADDRESS
|
PEERTUBE_ADMIN_EMAIL: EMAIL_ADDRESS
|
||||||
ports:
|
# ports:
|
||||||
- "1935:1935" # Comment if you don't want to use the live feature
|
# - "1935:1935" # Comment if you don't want to use the live feature
|
||||||
- "9000:9000" # Uncomment if you use another webserver/proxy or test PeerTube in local, otherwise not suitable for production
|
# - "9000:9000" # Uncomment if you use another webserver/proxy or test PeerTube in local, otherwise not suitable for production
|
||||||
volumes:
|
volumes:
|
||||||
- data:/data
|
- data:/data
|
||||||
- config:/config
|
- config:/config
|
||||||
@@ -77,7 +77,8 @@ services:
|
|||||||
restart: "always"
|
restart: "always"
|
||||||
|
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:17-alpine
|
# image: postgres:17-alpine
|
||||||
|
image: postgres:13-alpine
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
POSTGRES_PASSWORD: YOUR_POSTGRES_PASSWORD
|
POSTGRES_PASSWORD: YOUR_POSTGRES_PASSWORD
|
||||||
|
|||||||
+3
-1
@@ -1,5 +1,7 @@
|
|||||||
# Vikunja
|
# Vikunja
|
||||||
**WARNING**: This software is brand new and cannot handle a power failure. I'm probably going to stop using it because of that. I don't want to have to manually recover everything any time there is an uncontrollable issue like this.
|
**WARNING**: After a power failure, permissions were reset on the volume this
|
||||||
|
app was using, causing it to fail. I have no idea how that occurred. Permissions
|
||||||
|
must be user/group 1000 for this to function.
|
||||||
|
|
||||||
1. [What to backup](https://vikunja.io/docs/what-to-backup/)
|
1. [What to backup](https://vikunja.io/docs/what-to-backup/)
|
||||||
2. [Configuration options](https://vikunja.io/docs/config-options/)
|
2. [Configuration options](https://vikunja.io/docs/config-options/)
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ services:
|
|||||||
VIKUNJA_REDIS_HOST: 'redis:6379'
|
VIKUNJA_REDIS_HOST: 'redis:6379'
|
||||||
VIKUNJA_CACHE_ENABLED: 1
|
VIKUNJA_CACHE_ENABLED: 1
|
||||||
VIKUNJA_CACHE_TYPE: redis
|
VIKUNJA_CACHE_TYPE: redis
|
||||||
ports:
|
# ports:
|
||||||
- 3456:3456
|
# - 3456:3456
|
||||||
volumes:
|
volumes:
|
||||||
- files:/app/vikunja/files
|
- files:/app/vikunja/files
|
||||||
depends_on:
|
depends_on:
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# Wordpress
|
||||||
|
This instance has a long history, as I've migrated my blog several times. As a
|
||||||
|
result of previously not keeping records, I've lost some of the history of how
|
||||||
|
it got here.
|
||||||
|
|
||||||
|
Ultimately, I had to modify the docker-compose I'd made for Pressbooks to make
|
||||||
|
this work (originally [from here](https://github.com/TangentFoxy/pressbooks-compatible-wordpress-dockerfile/blob/main/docker-compose.yml)).
|
||||||
|
|
||||||
|
I briefly tried [the version from awesome-docker-compose](https://github.com/docker/awesome-compose/blob/master/wordpress-mysql/compose.yaml),
|
||||||
|
but it doesn't support the ability to make basic edits to a Wordpress install,
|
||||||
|
yikes!
|
||||||
|
|
||||||
|
(It also used a bad method for setting the database root password. D:)
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
# TODO set volume directories
|
||||||
|
# TODO change ALL_CAPS environment variables in all locations
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
html:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: /mnt/apple/blog/html
|
||||||
|
mysql:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: /mnt/apple/blog/mysql
|
||||||
|
|
||||||
|
services:
|
||||||
|
wordpress:
|
||||||
|
image: wordpress:latest
|
||||||
|
restart: always
|
||||||
|
# ports:
|
||||||
|
# - 8080:80
|
||||||
|
environment:
|
||||||
|
WORDPRESS_DB_HOST: db
|
||||||
|
WORDPRESS_DB_USER: wordpress
|
||||||
|
WORDPRESS_DB_PASSWORD: YOUR_PASSWORD
|
||||||
|
WORDPRESS_DB_NAME: wordpress
|
||||||
|
volumes:
|
||||||
|
- html:/var/www/html
|
||||||
|
|
||||||
|
db:
|
||||||
|
container_name: db
|
||||||
|
image: mysql:8.0
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
MYSQL_DATABASE: wordpress
|
||||||
|
MYSQL_USER: wordpress
|
||||||
|
MYSQL_PASSWORD: YOUR_PASSWORD
|
||||||
|
MYSQL_RANDOM_ROOT_PASSWORD: '1'
|
||||||
|
volumes:
|
||||||
|
- mysql:/var/lib/mysql
|
||||||
Reference in New Issue
Block a user