You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert

3
+
[](https://github.com/ivylikethevine/saffron)
4
4
5
5
## (S)erver (A)s a (F)ile (F)older (R)unning (O)n (N)etwork
6
6
7
7
...the second half is a backcronym
8
8
9
+
### What is Saffron?
10
+
11
+
Saffron is a(n)
12
+
1. open sourced
13
+
2. homelab deployment
14
+
3. annotated notebook
15
+
4. self documenting wiki
16
+
5. docker compose system
17
+
9
18
**Saffron is GPL-3.0 open sourced [on github](https://github.com/ivylikethevine/saffron)**
10
19
11
20
### Saffron is a docker compose deployment of a homelab via (almost entirely) static files
@@ -16,205 +25,48 @@ I built saffron because I wanted a way to utilize docker compose on a homelab se
16
25
17
26
Read this project's README's as a wiki [here](https://ivylikethevine.github.io/saffron), served via [docsify](https://ivylikethevine.github.io/saffron).
18
27
19
-
#### Features
28
+
###What does Saffron replace?
20
29
21
30
- Media libraries for TV, movies, music, ebooks, & audiobooks. (+ subtitles!)
22
-
- Easy migration from any existing docker or docker compose deployment.
31
+
- Radarr/Sonarr + Plex/Jellyfin
32
+
- Lidarr + Navidrome
33
+
- Readarr + Kavita & Audiobookshelf
34
+
- Bazarr
35
+
- Overseerr/Jellyseer
36
+
- Self contained and reactive wiki
37
+
- docsify
38
+
- vscode-server
39
+
- Comprehensive monitoring/administration suite
40
+
- dockage
41
+
- uptime kuma
42
+
- dozzle
43
+
- netdata
44
+
- speedtest-tracker
23
45
- Full torrenting suite with VPN integration.
46
+
- qbittorrentvpn
47
+
- prowlarr
48
+
- flaresolvarr
24
49
- Automated backup to cloud storage.
50
+
- duplicati
25
51
- Smart home automation & integration.
26
-
- Network speedtests + hardware monitoring.
27
-
- Minecraft server hosting.
28
-
- PXE environment for OS booting on other nodes.
29
-
- Zero DNS or networking configuration outside of docker.
30
-
- Easily configurable volume mounting via [common.yaml](#common-yaml) and [docker extends](https://docs.docker.com/compose/multiple-compose-files/extends/)
31
-
32
-
##### Features (Under Development)
33
-
34
-
1. Automatic traefik routing of containers using docker integration.
35
-
1. Avahi mdns/nss-mdns discovery.
36
-
1. Git submodules/subtrees for additional services.
37
-
1. SSL certs
38
-
39
-
#### To deploy
40
-
41
-
Requires: git, docker, docker compose
42
-
43
-
Tested on: Linux Mint, Ubuntu, and Debian
44
-
45
-
```bash
46
-
# Grab saffron (either http or ssh)
47
-
git clone https://github.com/ivylikethevine/saffron.git # http, works with no SSH key
# Make directories with correct permssions, create common.yaml, & start dockge
52
-
./install-saffron.sh
53
-
```
54
-
55
-
##### Easy installation of git & docker
56
-
57
-
```bash
58
-
sudo apt install -y git # required to install saffron
59
-
sudo apt install -y curl # required to install docker via script
60
-
sudo apt install -y avahi-daemon # optional, but highly recommended for easy configuration
61
-
62
-
# Install docker from the easy install script
63
-
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh ./get-docker.sh
64
-
65
-
# Allow docker to run without sudo
66
-
sudo usermod -aG docker $USER&& newgrp docker
67
-
# And verify
68
-
docker run hello-world
69
-
```
70
-
71
-
Then visit `http://localhost:5001` or `http://<hostname>.local:5001` to start and stop individual stacks via the [Dockge](https://github.com/louislam/dockge) interface. Dockge is a Web UI to manage & control docker containers. As opposed to portainer, the user maintains direct and full control of the [compose](https://docs.docker.com/compose/)[yaml](https://learnxinyminutes.com/docs/yaml/) files.
72
-
73
-
##### To Update
74
-
75
-
```bash
76
-
docker stop $(docker ps -a -q)# Important to stop before updates! (remove the $ if using fish shell)
77
-
cd /home/$USER/saffron
78
-
git pull
79
-
docker compose up -d dockge # Then visit dockge to start/stop containers
80
-
```
81
-
82
-
#### To Remove
83
-
84
-
```bash
85
-
cd /home/$USER/saffron/resources
86
-
./remove-saffron.sh
87
-
```
88
-
89
-
### Important Paths
90
-
91
-
1.`/containers/` - stores individual generated configs, db files, etc.
92
-
- This is not a perfect separation, since some containers will use config for "data" (such as torrent clients using it as a default download location)
93
-
2.`/home/$USER/saffron/stacks` - all stacks & services' compose files
94
-
3.`$DATA_DIR` - where bulk files are stored (configured during setup) See [common.yaml](#common-yaml) for more infromation.
95
-
96
-
## v0.35 List of Stacks & Services (35+ Apps, 40+ Containers)
97
-
98
-
\*\* Names are lowercased per dockge stack naming requirements
99
-
100
-
-🚧[avahi](stacks/avahi/README.md) - Allows docker containers to access mdns on LAN.
-✅[docsify](stacks/docsify/README.md) - Web UI to view this repo's `README.md`'s as a wiki reflecting local edits. See the [public](https://ivylikethevine.github.io/saffron) instance or visit <http://hostname.local:5001> (if the container is running).
117
-
118
-
-✅[dozzle](stacks/dozzle/README.md) - Web UI to live docker container logs.
119
-
120
-
-✅[duplicati](stacks/duplicati/README.md) - Automated backup to AWS/Backblaze/etc.
121
-
122
-
-✅[esphome](stacks/esphome/README.md) - Easily create & mange esp32-based IoT devices, such as temp. sensors.
123
-
124
-
-✅[handbrake](stacks/handbrake/README.md) - Web UI for transcoding video/audio files.
125
-
126
-
-✅[heimdall](stacks/heimdall/README.md) - Easy to use home page.
127
-
128
-
-✅[homeassistant](stacks/homeassistant/README.md) - Smart home automation.
129
-
130
-
-✅[it-tools](stacks/it-tools/README.md) - Helpful tool for various tasks (generating UUIDs, hashes, etc.).
131
-
132
-
-✅[mariadb](stacks/mariadb/README.md) - Basic database (mostly used as template for adding to services that require a DB).
133
-
134
-
-🟢[media-clients](stacks/media-clients/README.md) - Various media streaming services.
-🟢[torrent](stacks/torrent/README.md) - Full torrenting suite with a preconfigured <ahref="https://github.com/ivylikethevine/saffron/blob/main/stacks/torrent/.env.public"><code>.env.public</code></a>.
173
-
174
-
-✅ qbittorrentvpn - Torrent client that runs only on VPN connection.
175
-
176
-
-✅ prowlarr - Search aggregator.
177
-
178
-
-✅ flaresolverr - Search proxy (required for some search engines & reduces error rates in general).
179
-
180
-
-🚧[traefik](stacks/traefik/README.md) - Reverse proxy with easy docker integration.
181
-
182
-
-✅[uptime-kuma](stacks/uptime-kuma/README.md) - Nice health checking tool with simple UI (same dev as Dockge!).
183
-
184
-
-✅[ustreamer](stacks/ustreamer/README.md) - Easily deployable IP camera.
185
-
186
-
-✅[utils](stacks/utils/README.md) - Simple dockerfile-based compose with basic utils for debugging.
187
-
188
-
-✅[vscode-server](stacks/vscode-server/README.md) - VSCode running with a Web UI (for editing saffron config files, etc.).
-✅[windows](stacks/windows/README.md) - Automatic install/configuration with web VNC & native RDP for Windows XP -> Windows 11
193
-
194
-
### Services under consideration
195
-
196
-
-[Adguard](https://adguard.com/en/welcome.html) - for whole home ad blocking.
197
-
-[Ansible Semaphore](https://www.semui.co/) - for easier host updating/management.
198
-
- Mail Server - for notifications.
199
-
-[Cloudflare](https://developers.cloudflare.com/cloudflare-one/) - for access outside of home network.
200
-
-[Nextcloud](https://nextcloud.com/) - for general homelab "cloud".
201
-
202
-
If a service isn't on here yet, feel free to add it! Most of these are very simple applications of the excellent [linuxserver docker images](https://docs.linuxserver.io/images/). See creating a [saffron-styled compose](#saffron-example) for more detail on the format of `compose.yaml`. There are also the [official docker hub images](https://hub.docker.com/u/library).
203
-
204
-
I've also made stacks using Lissy93's well maintained [portainer template repo](https://github.com/Lissy93/portainer-templates), although this is slightly different than working from raw compose files.
205
-
206
-
#### Compatible with
207
-
208
-
-[obico](https://www.obico.io/docs/server-guides/install/) - 3D print failure detection notification/stopping
209
-
210
-
- To install:
211
-
`cd /home/$USER/saffron/stacks && git clone -b release https://github.com/TheSpaghettiDetective/obico-server.git && cd obico-server && docker compose up -d`
61
+
- Zero DNS or networking configuration outside of docker.
62
+
- Easily configurable volume mounting via [common.yaml](#common-yaml) and [docker extends](https://docs.docker.com/compose/multiple-compose-files/extends/)
63
+
- Easy migration from any existing docker or docker compose deployment.
212
64
213
-
- For other projects that use a docker compose file from locally build Dockerfiles, clone the repo into `/home/$USER/saffron/stacks`, then add `stacks/repoName/` to the `.gitignore` file. An alternative is to use either the `p-` or `dev-` prefix in the stack name to be ignored by git. See [editing .gitignore](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository#_ignoring) for more information.
#### `common.yaml`(new in v0.25) <aid="common-yaml"></a>
69
+
#### `common.yaml` <aid="common-yaml"></a>
218
70
219
71
By using a set of base "services"\*\* inside of `saffron/stacks/common.yaml`, we can limit the length of each docker compose file & allow for easy re-use of shared docker configurations, mainly:
220
72
@@ -226,6 +78,8 @@ On install, saffron copies it's local `stacks/common.yaml.public` file to `stack
226
78
227
79
\*\* : These aren't full services since they have no images defined. As such, they can't run alone.
# Make directories with correct permssions, create common.yaml, & start dockge
162
+
./install-saffron.sh
163
+
```
164
+
165
+
Then visit `http://localhost:5001` or `http://<hostname>.local:5001` to start and stop individual stacks via the [Dockge](https://github.com/louislam/dockge) interface. Dockge is a Web UI to manage & control docker containers. As opposed to portainer, the user maintains direct and full control of the [compose](https://docs.docker.com/compose/)[yaml](https://learnxinyminutes.com/docs/yaml/) files.
166
+
167
+
If a service isn't on here yet, feel free to add it! Most of these are very simple applications of the excellent [linuxserver docker images](https://docs.linuxserver.io/images/). See creating a [saffron-styled compose](#saffron-example) for more detail on the format of `compose.yaml`. There are also the [official docker hub images](https://hub.docker.com/u/library).
168
+
169
+
I've also made stacks using Lissy93's well maintained [portainer template repo](https://github.com/Lissy93/portainer-templates), although this is slightly different than working from raw compose files.
170
+
171
+
### Important Paths
172
+
173
+
1.`/containers/` - stores individual generated configs, db files, etc.
174
+
- This is not a perfect separation, since some containers will use config for "data" (such as torrent clients using it as a default download location)
175
+
2.`/home/$USER/saffron/stacks` - all stacks & services' compose files
176
+
3.`$DATA_DIR` - where bulk files are stored (configured during setup) See [common.yaml](#common-yaml) for more infromation.
0 commit comments