Compare commits
34
Commits
ac73b714e1
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fb178332f4 | ||
|
|
72befb7493 | ||
|
|
95da1f35a8 | ||
|
|
833071e553 | ||
|
|
f38bb82bbc | ||
|
|
31c1d4f672 | ||
|
|
156998baa4 | ||
|
|
727f12dd25 | ||
|
|
0fc70b85e6 | ||
|
|
6b19487cb6 | ||
|
|
9d334575fc | ||
|
|
05c3d57aed | ||
|
|
5152b9ddbf | ||
|
|
179541020c | ||
|
|
b19b1fb07e | ||
|
|
012b908a81 | ||
|
|
53644d6d06 | ||
|
|
faa04e1d6c | ||
|
|
281b08cfa8 | ||
|
|
539ac39135 | ||
|
|
83808b40b7 | ||
|
|
7419ef0c3f | ||
|
|
2d3925ea3d | ||
|
|
edc84a32b6 | ||
|
|
960b81d7b4 | ||
|
|
a66b315d2f | ||
|
|
e3fed7d305 | ||
|
|
825bf7c47c | ||
|
|
d3d9a2b553 | ||
|
|
ad3ce70a76 | ||
|
|
c66c9ff0c6 | ||
|
|
1202580578 | ||
|
|
c2da501ddd | ||
|
|
ad918df344 |
No files matched your search
@@ -1,2 +1,4 @@
|
||||
# Jelu
|
||||
A book tracker.
|
||||
|
||||
Modified from [official instructions](https://github.com/bayang/jelu?tab=readme-ov-file#docker).
|
||||
@@ -1,4 +1,6 @@
|
||||
# Lemmy
|
||||
A federated reddit-style board.
|
||||
|
||||
This is like my 3rd attempt to make Lemmy do anything, but it is fundamentally
|
||||
unable to run alongside other apps for no reason? I don't know.
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
# Yamtrack
|
||||
A multimedia tracker.
|
||||
|
||||
Modified from [readme](https://github.com/FuzzyGrim/Yamtrack) instructions which tell ya to use the [dev docker-compose.yml](https://github.com/FuzzyGrim/Yamtrack/blob/dev/docker-compose.yml).
|
||||
|
||||
**WARNING**: Yamtrack, despite having a nicer aesthetic, the ability to add custom items, and being more updated, is inferior to MediaTrack in speed, usability, and presentation & availability of information.
|
||||
@@ -6,6 +6,15 @@ 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).
|
||||
|
||||
Most of these are designed to be run behind a reverse proxy, and I use Cosmos
|
||||
for this. As a result, I often comment out `ports` declarations. Initial setup
|
||||
should probably be shielded by the reverse proxy login.
|
||||
|
||||
## Usage
|
||||
1. Put the `docker-compose.yml` file where you want data to live.
|
||||
2. Edit the file to set correct information based on the TODOs at the top.
|
||||
3. **Run `docker-compose up -d` before using any form of GUI.** (If this step is skipped, volumes will *not* be set up correctly and you have to start over.)
|
||||
|
||||
## Named bind mounts
|
||||
Managing volumes that need to be shared within a config is easier if you can use names with bind mounts:
|
||||
```
|
||||
@@ -17,3 +26,24 @@ volumes:
|
||||
o: bind
|
||||
device: /path/on/host
|
||||
```
|
||||
|
||||
Remember that directories must be created *before* starting containers.
|
||||
|
||||
## Standard reminder notes
|
||||
I place these at the top of compose files for different changes that need to be made to use these files:
|
||||
- `# TODO set volume directories`: Named bind mount paths must be set (near top of file).
|
||||
- `# TODO change ALL_CAPS environment variables in all locations`: Environment variables for secrets (or settings) must be set.
|
||||
- `# TODO set user/group IDs`: Container(s) must have a user block (`user: "USER:GROUP"`) set to the correct **numerical** permissions.
|
||||
- `# TODO set timezone (TZ)`: A timezone environment variable (named `TZ`) must be set. (For me, `America/Denver`.)
|
||||
|
||||
## ReadMes
|
||||
1. Note where I got the original compose file or documentation.
|
||||
2. Add instructions.
|
||||
3. End with notes about complications or issues I ran into.
|
||||
|
||||
## Tasks
|
||||
- [ ] figure out requirements to config a cosmos database so that its config
|
||||
can have one specified here instead of being stuck on the host machine
|
||||
- [ ] Update EtherPad, use it, make sure it works, update table
|
||||
- [ ] Move `calibre-web-nextgen` to deprecated..
|
||||
- [ ] Rename `.deprecated` to `+deprecated`
|
||||
+13
-1
@@ -1,4 +1,14 @@
|
||||
This file is updated in my Obsidian vault, and then exported to `tangent/docker-compose` on my Gitea server.
|
||||
---
|
||||
aliases:
|
||||
- Selfhosted Services
|
||||
of:
|
||||
- "[[Archives]]"
|
||||
share_link: https://share.note.sx/pe1hu5ka
|
||||
share_updated: 2026-07-27T18:54:54-06:00
|
||||
---
|
||||
|
||||
# Selfhosted Services
|
||||
This file is updated in my Obsidian vault, and then exported to [`tangent/docker-compose`](https://gitea.tangentfox.com/tangent/docker-compose/src/branch/main/Table-of-Services.md) on my Gitea server.
|
||||
So, me, reading this, UPDATE IT THERE.
|
||||
|
||||
| Service | In-Use | Purpose |
|
||||
@@ -8,6 +18,8 @@ So, me, reading this, UPDATE IT THERE.
|
||||
| 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. |
|
||||
| jelu | 🛑 | Jelu is supposed to be a reading tracker, but its import features don't work at all. |
|
||||
| lemmy | 🛑 | Lemmy has very outdated and misleading docs. When you set it up, it tries to serve an API and the UI in the same place with different services, which causes it to 404 itself silently. Nothing explains how to fix this, so it's impossible unless you're using the whole machine. |
|
||||
| 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. |
|
||||
|
||||
@@ -5,11 +5,15 @@ continuous 502 Bad Gateway errors until it resolves.
|
||||
|
||||
Modified from official instructions: https://www.audiobookshelf.org/docs/#docker-compose-install
|
||||
|
||||
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.
|
||||
|
||||
**WARNING**: Audiobookshelf doesn't clean up after itself, so when you modify
|
||||
or remove items, it will bloat over time. I should replace it.
|
||||
|
||||
## Setup
|
||||
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.
|
||||
@@ -1,2 +1,7 @@
|
||||
# Calibre Web Automated (CWA)
|
||||
Ebook manager.
|
||||
|
||||
**WARNING**: Should be assumed insecure and kept behind a secure proxy.
|
||||
Pinned to a specific version due to fears over changes and instability in future versions. Abandonware possibly.
|
||||
|
||||
Modified from [official instructions](https://github.com/crocodilestick/Calibre-Web-Automated?tab=readme-ov-file#using-docker-compose-recommended).
|
||||
@@ -30,7 +30,7 @@ volumes:
|
||||
|
||||
services:
|
||||
calibre-web-automated:
|
||||
image: crocodilestick/calibre-web-automated:latest
|
||||
image: crocodilestick/calibre-web-automated:v4.0.6
|
||||
container_name: calibre-web-automated
|
||||
environment:
|
||||
# Only change these if you know what you're doing
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
# Calibre-Web-NextGen
|
||||
~~Community maintained version of CWA with many fixes and improvements.~~
|
||||
AI-slop version of CWA maintained entirely by bots as far as I can tell.
|
||||
More features and fixes, but also highly unstable and power-hungry.
|
||||
https://github.com/new-usemame/Calibre-Web-NextGen
|
||||
@@ -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: ghcr.io/new-usemame/calibre-web-nextgen:v4.1.37
|
||||
container_name: calibre-web-nextgen
|
||||
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
|
||||
@@ -2,7 +2,8 @@
|
||||
**WARNING**: A database is set up by the UI using a volume instead of a bind
|
||||
mount, so this setup is ***not*** self-contained.
|
||||
|
||||
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.
|
||||
|
||||
## Setup
|
||||
Host mode networking needs to be explicitly enabled in Docker Desktop on macOS before attempting to run this.
|
||||
@@ -1,2 +1,4 @@
|
||||
# Etherpad
|
||||
**WARNING**: Etherpad cannot handle power interruptions gracefully.
|
||||
|
||||
https://docs.etherpad.org/docker.html#ready-to-use-docker-compose
|
||||
@@ -17,7 +17,7 @@ networks:
|
||||
|
||||
services:
|
||||
server:
|
||||
image: docker.gitea.com/gitea:nightly
|
||||
image: docker.gitea.com/gitea:latest
|
||||
container_name: gitea
|
||||
environment:
|
||||
- USER_UID=1002
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
# Immich
|
||||
This was created following the [Docker Compose installation guide](https://docs.immich.app/install/docker-compose/).
|
||||
|
||||
WARNING: Does not work with docker-compose.
|
||||
**WARNING**: must use `docker compose`. Does not work with older `docker-compose` script.
|
||||
|
||||
1. Edit `docker-compose.yml` to set directories and a database password.
|
||||
2. Create directories needed: library, database, model-cache
|
||||
|
||||
+31
-1
@@ -1,5 +1,35 @@
|
||||
# Luanti server
|
||||
Modified from [linuxserver version](https://docs.linuxserver.io/images/docker-luanti/),
|
||||
because the [official version](https://docs.luanti.org/for-server-hosts/setup/containers/) doesn't support non-Linux hosts somehow?
|
||||
|
||||
The main config file (`LUANTI_SERVER/main-config/minetest.conf`)
|
||||
may need some changes after it is generated to better support starting your server:
|
||||
|
||||
```
|
||||
name = admin # Sign up as this user name to have admin rights.
|
||||
enable_tnt = true # only if you want TNT (some mods require this)
|
||||
secure.http_mods = digistuff # optional feature
|
||||
enable_tnt = true
|
||||
```
|
||||
|
||||
Don't forget to actually install a game before trying to run.
|
||||
The provided config assumes you are playing `minetest`.
|
||||
|
||||
Note that admin rights are not the same as in-game permissions,
|
||||
you still need to use `/grantme all` to get all permissions,
|
||||
and `/revokeme creative` if you don't want creative mode.
|
||||
|
||||
Worlds cannot start with a number or have spaces in their name,
|
||||
and can only be selected by path for some reason.
|
||||
|
||||
## Schematics
|
||||
Assuming WorldEdit is installed, you can move things between worlds using schematics:
|
||||
1. Select corners of a volume by standing where you want them and running `//pos1` and `//pos2`.
|
||||
The selection box will be at your feet.
|
||||
2. Save schematics with `//mtschemcreate SCHEMATIC_NAME`.
|
||||
3. Schematics are placed in a world's `schems` directory. Copy them and rename them as necessary.
|
||||
4. Use `//pos1` to select a start point, and `//mtschemplace SCHEMATIC_NAME` to place it.
|
||||
|
||||
## Unsafe Chainsaw
|
||||
The `technic` mod's chainsaw by default protects you from destroying player-built structures,
|
||||
but this also prevents several mods' trees from being cut by it. This can be changed by disabling its safety check:
|
||||
`technic_safe_chainsaw = false`
|
||||
@@ -1,3 +1,9 @@
|
||||
# TODO set volume directories
|
||||
# TODO change ALL_CAPS environment variables in all locations
|
||||
# WORLD_NAME cannot have special characters or spaces, and must not start with a number
|
||||
|
||||
# Normally, I use external management to open up ports, but the definitions here are necessary.
|
||||
|
||||
volumes:
|
||||
LUANTI_SERVER:
|
||||
driver: local
|
||||
@@ -6,19 +12,19 @@ volumes:
|
||||
o: bind
|
||||
device: /Volumes/Treat/Containers/luanti-server/server
|
||||
|
||||
name: luanti-server
|
||||
|
||||
services:
|
||||
luanti-server:
|
||||
luanti_server:
|
||||
container_name: luanti_server
|
||||
image: lscr.io/linuxserver/luanti:5.15.2
|
||||
image: lscr.io/linuxserver/luanti:5.16.1
|
||||
restart: always
|
||||
# networks:
|
||||
# - default
|
||||
environment:
|
||||
- TZ=America/Denver
|
||||
# do not use --terminal or --server
|
||||
- "CLI_ARGS=--gameid minetest"
|
||||
# do not use --terminal or --server or --worldname
|
||||
- "CLI_ARGS=--gameid minetest --world /config/.minetest/worlds/WORLD_NAME"
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
volumes:
|
||||
- LUANTI_SERVER:/config/.minetest
|
||||
ports:
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
# Miniflux
|
||||
**WARNING**: Cannot handle power failure.
|
||||
|
||||
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
|
||||
|
||||
+6
-3
@@ -1,7 +1,10 @@
|
||||
# Vikunja
|
||||
**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.
|
||||
**WARNING**: Inconsistent around power failures. Sometimes it comes right back,
|
||||
sometimes it breaks until restarted several times.
|
||||
|
||||
1. [What to backup](https://vikunja.io/docs/what-to-backup/)
|
||||
2. [Configuration options](https://vikunja.io/docs/config-options/)
|
||||
|
||||
**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,4 +1,7 @@
|
||||
# Wordpress
|
||||
**NOTE**: This instance will be replaced with custom blog hosting software, as I'm sick
|
||||
of all the terrible decisions and bad security of 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.
|
||||
|
||||
Reference in new issue
Block a user