mirror of
https://github.com/tborychowski/self-hosted-cookbook.git
synced 2025-06-27 13:15:23 +00:00
more
This commit is contained in:
parent
1b9c3b4e9f
commit
e9267eaa3d
31
README.md
31
README.md
@ -10,20 +10,33 @@ The aims is to provide a ready-to-run recipes that you can just copy, paste and
|
||||
So, without further ado, here's the current list:
|
||||
|
||||
# Ad Blockers & local DNS
|
||||
- [AdGuard Home](apps/ad-blockers/adguard-home.md)
|
||||
- [AdGuard Home](apps/ad-blockers/adguard.md)
|
||||
- [PiHole](apps/ad-blockers/pihole.md)
|
||||
- [Block Lists](apps/ad-blockers/block-lists.md)
|
||||
- [Block Lists](apps/ad-blockers/lists.md)
|
||||
|
||||
|
||||
# Blogging
|
||||
- [AnchorCMS](https://github.com/anchorcms/anchor-cms#installation)
|
||||
- [Ghost](https://ghost.org/docs/install/docker/)
|
||||
- [Hugo](https://gohugo.io/)
|
||||
- [Kirby](https://getkirby.com/)
|
||||
- [Metalsmith](https://metalsmith.io/)
|
||||
- [Pagekit](https://pagekit.com/docs/getting-started/installation)
|
||||
- [Pelican](https://docs.getpelican.com/en/stable/quickstart.html#installation)
|
||||
- [PostLeaf](https://www.postleaf.org/installing)
|
||||
- [Textpattern](https://docs.textpattern.com/installation/)
|
||||
- [WriteFreely](https://github.com/writeas/writefreely)
|
||||
|
||||
# Bookmarks
|
||||
- Shaarli
|
||||
- Shiori
|
||||
- Shaark
|
||||
- [Shaarli](apps/bookmarks/shaarli.md)
|
||||
- [Shiori](apps/bookmarks/shiori.md)
|
||||
- [Shaark](apps/bookmarks/shaark.md)
|
||||
|
||||
# Cloud
|
||||
- FileRun
|
||||
- NextCloud
|
||||
- Pydio
|
||||
- Seafile
|
||||
- [FileRun](apps/cloud/filerun.md)
|
||||
- [NextCloud](apps/cloud/nextcloud.md)
|
||||
- [Pydio](apps/cloud/pydio.md)
|
||||
- [Seafile](apps/cloud/seafile.md)
|
||||
|
||||
# Dashboard
|
||||
- DashMachine
|
||||
|
@ -4,8 +4,9 @@
|
||||
|
||||
- [Homepage](https://adguard.com/en/adguard-home/overview.html)
|
||||
- [Overview blog post](https://adguard.com/en/blog/in-depth-review-adguard-home.html)
|
||||
- [Github](https://github.com/AdguardTeam/AdguardHome)
|
||||
- [DockerHub](https://hub.docker.com/r/adguard/adguardhome)
|
||||
- [Github repo](https://github.com/AdguardTeam/AdguardHome)
|
||||
- [DockerHub repo](https://hub.docker.com/r/adguard/adguardhome)
|
||||
|
||||
|
||||
## `docker-compose.yml`
|
||||
```yml
|
@ -6,8 +6,8 @@
|
||||
- [disconnect.me/simple_ad](https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt)
|
||||
- [hosts-file.net/ad_servers](https://hosts-file.net/ad_servers.txt)
|
||||
- [ookangzheng/dbl-oisd-nl](https://raw.githubusercontent.com/ookangzheng/dbl-oisd-nl/master/dbl.txt)
|
||||
- [more lists](blacklists.txt)
|
||||
- [more lists](lists-black.txt)
|
||||
|
||||
# Whitelists
|
||||
- [raghavdua1995/DNSlock-PiHole-whitelist](https://raw.githubusercontent.com/raghavdua1995/DNSlock-PiHole-whitelist/master/whitelist.list)
|
||||
- [another one](whitelist.txt)
|
||||
- [another one](lists-white.txt)
|
@ -1,12 +1,12 @@
|
||||
# PiHole
|
||||
|
||||
## Overview
|
||||
|
||||
- [Homepage](https://pi-hole.net/)
|
||||
- [Pihole Docker github repo](https://github.com/pi-hole/docker-pi-hole)
|
||||
- [Docs](https://docs.pi-hole.net/)
|
||||
- [Github](https://github.com/pi-hole)
|
||||
- [DockerHub](https://hub.docker.com/r/pihole/pihole)
|
||||
- [Github repo](https://github.com/pi-hole)
|
||||
- [DockerHub repo](https://hub.docker.com/r/pihole/pihole)
|
||||
|
||||
|
||||
## `docker-compose.yml`
|
||||
```yml
|
||||
|
BIN
apps/bookmarks/shaark.jpg
Normal file
BIN
apps/bookmarks/shaark.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 162 KiB |
10
apps/bookmarks/shaark.md
Normal file
10
apps/bookmarks/shaark.md
Normal file
@ -0,0 +1,10 @@
|
||||
# Shaark
|
||||
Good looking, but doesn't work ATM.
|
||||
Also - doesn't have a public image on Docker Hub (or similar), so can't use `docker-compose` the easy way.
|
||||
|
||||
- [Github repo](https://github.com/MarceauKa/shaark)
|
||||
- [DockerHub repo]()
|
||||
- [Docs](https://github.com/MarceauKa/shaark#documentation)
|
||||
- [Demo](https://shaark.mka.ovh): `admin@example.com`:`secret`
|
||||
|
||||

|
136
apps/bookmarks/shaarli.md
Normal file
136
apps/bookmarks/shaarli.md
Normal file
@ -0,0 +1,136 @@
|
||||
# Shaarli
|
||||
Not too bad. Just stores & tags links, nothing more.
|
||||
- [Github repo](https://github.com/shaarli/Shaarli)
|
||||
- [Docs](https://shaarli.readthedocs.io/en/master/)
|
||||
- [Demo](https://demo.shaarli.org/)
|
||||
|
||||

|
||||
|
||||
|
||||
## docker-compose.yml
|
||||
```yml
|
||||
---
|
||||
version: '3'
|
||||
services:
|
||||
shaarli:
|
||||
image: shaarli/shaarli:master
|
||||
container_name: shaarli
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- TZ=Europe/Dublin
|
||||
ports:
|
||||
- "3123:80"
|
||||
volumes:
|
||||
- ./cache:/var/www/shaarli/cache
|
||||
- ./data:/var/www/shaarli/data
|
||||
```
|
||||
|
||||
## Tips & Tricks
|
||||
|
||||
### Nicer theme
|
||||
Edit `shaarli/data/user.css`:
|
||||
```css
|
||||
:root {
|
||||
--main-color: #144837;
|
||||
--background-color: #333;
|
||||
--dark-main-color: #0c281d;
|
||||
}
|
||||
|
||||
#actions,
|
||||
#search { display: none; position: relative; }
|
||||
#actions.open,
|
||||
#search.open { display: block; }
|
||||
|
||||
#shaarli-menu-tags,
|
||||
#shaarli-menu-picwall,
|
||||
#shaarli-menu-daily,
|
||||
#shaarli-menu-desktop-rss,
|
||||
#linklist-paging-bottom-block,
|
||||
#footer,
|
||||
.linksperpage form,
|
||||
.linkcount,
|
||||
.fa-external-link,
|
||||
.pure-u-lg-2-24,
|
||||
#search-linklist .searchform { display: none !important; }
|
||||
|
||||
#link-count-content,
|
||||
#linklist-loop-content { width: 90%; margin: 10px auto; }
|
||||
|
||||
#linklist { margin-bottom: 40px; }
|
||||
|
||||
.linklist-item-title,
|
||||
.linklist-item { background-color: #222; color: #f0f0f0; }
|
||||
|
||||
.linklist-item { margin-bottom: 20px; }
|
||||
|
||||
.linklist-item-title .linklist-link { color: #ccc !important; font-weight: 300; }
|
||||
|
||||
.linklist-item-infos { background: #0003; color: #333; }
|
||||
|
||||
.linklist-filters,
|
||||
.linksperpage,
|
||||
.linklist-item-description,
|
||||
.linklist-item-infos { color: #aaa !important; }
|
||||
|
||||
.linklist-item.private::before { display: none; }
|
||||
.linklist-item { box-shadow: none; }
|
||||
|
||||
.linksperpage a,
|
||||
.linklist-filters .filter-off { background: none; color: #eee; }
|
||||
|
||||
.linklist-item-infos { padding: 10px 20px; }
|
||||
.linklist-item-infos a { color: #317b63; }
|
||||
.linklist-item-infos a:hover { color: #eee; }
|
||||
|
||||
.label { font-weight: 300; }
|
||||
.markdown { font-size: 14px; }
|
||||
|
||||
.linklist-item-title { padding: 5px 10px; }
|
||||
.linklist-item-description { padding: 5px 20px; }
|
||||
.linklist-item-thumbnail { margin: -5px -10px 0 0; }
|
||||
|
||||
|
||||
.linklist-item-infos-dateblock { display: flex; align-items: center; }
|
||||
.linklist-item-infos-controls-group { display: inline-flex !important; align-items: center; border-right: 0; }
|
||||
.linklist-item-infos-controls-item {
|
||||
height: 24px;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
width: 32px;
|
||||
}
|
||||
.linklist-item-infos-url { font-size: 14.4px; }
|
||||
.linklist-item-editbuttons { position: absolute; right: 130px; }
|
||||
|
||||
.page-form,
|
||||
.page-form .window-title,
|
||||
.page-form { background: #222; color: #eee; box-shadow: none; }
|
||||
|
||||
.page-form-complete div,
|
||||
.page-form-complete p { color: #eee; }
|
||||
|
||||
.page-form input[type="password"],
|
||||
.page-form input[type="text"],
|
||||
.page-form textarea { background: #111; color: #eee; border-color: #111; }
|
||||
|
||||
.page-form a.button,
|
||||
.page-form input[type="submit"] { box-shadow: none; border-radius: 5px; }
|
||||
|
||||
.pure-button {
|
||||
background-color: #111;
|
||||
color: #ccc;
|
||||
border-radius: 5px;
|
||||
padding: 12px;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.linklist-item-tags { margin-bottom: 5px; }
|
||||
|
||||
.edit-link,
|
||||
.delete-link,
|
||||
.pin-link { font-size: 14px !important; }
|
||||
|
||||
.linklist-item-infos .pin-link,
|
||||
.edit-link,
|
||||
.delete-link { color: #ccc !important; }
|
||||
```
|
BIN
apps/bookmarks/shaarli.png
Normal file
BIN
apps/bookmarks/shaarli.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 720 KiB |
23
apps/bookmarks/shiori.md
Normal file
23
apps/bookmarks/shiori.md
Normal file
@ -0,0 +1,23 @@
|
||||
# Shiori
|
||||
- [Github repo](https://github.com/go-shiori/shiori)
|
||||
- [Docs](https://github.com/go-shiori/shiori/wiki)
|
||||
|
||||

|
||||
|
||||
|
||||
## docker-compose.yml
|
||||
```yml
|
||||
---
|
||||
version: '3'
|
||||
services:
|
||||
shiori:
|
||||
image: radhifadlillah/shiori
|
||||
container_name: shiori
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- TZ=Europe/Dublin
|
||||
ports:
|
||||
- "3010:8080"
|
||||
volumes:
|
||||
- ./data:/srv/shiori
|
||||
```
|
BIN
apps/bookmarks/shiori.png
Normal file
BIN
apps/bookmarks/shiori.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 505 KiB |
BIN
apps/cloud/filerun.jpg
Normal file
BIN
apps/cloud/filerun.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 183 KiB |
53
apps/cloud/filerun.md
Normal file
53
apps/cloud/filerun.md
Normal file
@ -0,0 +1,53 @@
|
||||
# FileRun
|
||||
Mobile apps are just webdav clients.
|
||||
|
||||
<br>
|
||||
|
||||
- [Homepage](https://filerun.com/)
|
||||
- [DockerHub repo](https://hub.docker.com/r/afian/filerun/)
|
||||
- [Docs](https://docs.filerun.com/)
|
||||
- [Demo](https://demo.filerun.co/?username=admin&password=admin)
|
||||
|
||||

|
||||
|
||||
|
||||
## docker-compose.yml
|
||||
```yml
|
||||
version: '2'
|
||||
services:
|
||||
db:
|
||||
image: mariadb:10.1
|
||||
container_name: filerun-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: your_mysql_root_password
|
||||
MYSQL_USER: db_user
|
||||
MYSQL_PASSWORD: db_user_password_01
|
||||
MYSQL_DATABASE: filerundb
|
||||
volumes:
|
||||
- ./data/db:/var/lib/mysql
|
||||
|
||||
web:
|
||||
image: afian/filerun
|
||||
container_name: filerun
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
FR_DB_HOST: db
|
||||
FR_DB_PORT: 3306
|
||||
FR_DB_NAME: filerundb
|
||||
FR_DB_USER: db_user
|
||||
FR_DB_PASS: db_user_password_01
|
||||
APACHE_RUN_USER: www-data
|
||||
APACHE_RUN_USER_ID: 33
|
||||
APACHE_RUN_GROUP: www-data
|
||||
APACHE_RUN_GROUP_ID: 33
|
||||
depends_on:
|
||||
- db
|
||||
links:
|
||||
- db:db
|
||||
ports:
|
||||
- "3090:80"
|
||||
volumes:
|
||||
- ./data/html:/var/www/html
|
||||
- ./data/user-files:/user-files
|
||||
```
|
82
apps/cloud/nextcloud.md
Normal file
82
apps/cloud/nextcloud.md
Normal file
@ -0,0 +1,82 @@
|
||||
# NextCloud
|
||||
- Mobile apps are just for files, not other apps (e.g. tasks) installed in NextCloud.
|
||||
|
||||
<br>
|
||||
|
||||
- [Homepage](https://nextcloud.com/)
|
||||
- [Github repo](https://github.com/nextcloud)
|
||||
- [DockerHub repo](https://hub.docker.com/_/nextcloud/)
|
||||
- [Breeze dark theme](https://github.com/mwalbeck/nextcloud-breeze-dark) - some stuff doesn't work
|
||||
- [Docs](https://docs.nextcloud.com/server/20/admin_manual/)
|
||||
- [Demo](https://try.nextcloud.com/)
|
||||
|
||||
|
||||
## docker-compose.yml
|
||||
```yml
|
||||
version: '2'
|
||||
services:
|
||||
app:
|
||||
image: nextcloud:latest
|
||||
container_name: nextcloud
|
||||
restart: unless-stopped
|
||||
links:
|
||||
- db
|
||||
- redis
|
||||
ports:
|
||||
- 3100:80
|
||||
environment:
|
||||
- MYSQL_PASSWORD=nextcloud
|
||||
- MYSQL_DATABASE=nextcloud
|
||||
- MYSQL_USER=nextcloud
|
||||
- MYSQL_HOST=db
|
||||
- TRUSTED_PROXIES= # e.g. HOST IP
|
||||
- OVERWRITEPROTOCOL=https
|
||||
- OVERWRITEHOST=nextcloud.domain.com
|
||||
- REDIS_HOST=redis
|
||||
- REDIS_HOST_PASSWORD=nextcloud # must be set, because of a bug
|
||||
volumes:
|
||||
- ./nextcloud:/var/www/html
|
||||
- ./data:/var/www/html/data
|
||||
|
||||
cron:
|
||||
image: nextcloud:latest
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./nextcloud:/var/www/html
|
||||
entrypoint: /cron.sh
|
||||
depends_on:
|
||||
- db
|
||||
- redis
|
||||
|
||||
db:
|
||||
image: mariadb
|
||||
container_name: nextcloud-db
|
||||
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./db:/var/lib/mysql
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=nextcloud
|
||||
- MYSQL_PASSWORD=nextcloud
|
||||
- MYSQL_DATABASE=nextcloud
|
||||
- MYSQL_USER=nextcloud
|
||||
|
||||
redis:
|
||||
image: redis:alpine
|
||||
container_name: nextcloud-redis
|
||||
restart: unless-stopped
|
||||
command: redis-server --requirepass nextcloud
|
||||
environment:
|
||||
- TZ=Europe/Dublin
|
||||
volumes:
|
||||
- ./redis:/data
|
||||
expose:
|
||||
- 6379
|
||||
```
|
||||
|
||||
## Tips & Tricks
|
||||
|
||||
### Generate password/secret key
|
||||
```sh
|
||||
openssl rand -base64 32
|
||||
```
|
48
apps/cloud/pydio.md
Normal file
48
apps/cloud/pydio.md
Normal file
@ -0,0 +1,48 @@
|
||||
# Pydio Cells
|
||||
- Overly complex and... weird.
|
||||
- Has mobile apps.
|
||||
|
||||
<br>
|
||||
|
||||
- [Homepage](https://pydio.com/en/features/pydio-cells-overview)
|
||||
- [Github repo](https://github.com/pydio/cells)
|
||||
- [DockerHub repo](https://hub.docker.com/r/pydio/cells/)
|
||||
- [Docs](https://pydio.com/en/docs/administration-guides)
|
||||
|
||||
|
||||
## docker-compose.yml
|
||||
```yml
|
||||
---
|
||||
version: '3'
|
||||
services:
|
||||
cells:
|
||||
image: pydio/cells:latest
|
||||
container_name: pydio
|
||||
hostname: cells
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3060:8080"
|
||||
environment:
|
||||
- CELLS_NO_TLS=0
|
||||
- CELLS_BIND=0.0.0.0:8080
|
||||
- CELLS_EXTERNAL=pydio.domain.com
|
||||
- EXTERNAL_BIND=pydio.domain.com
|
||||
volumes:
|
||||
- "./datadir:/var/cells/data"
|
||||
- "./workingdir:/var/cells"
|
||||
|
||||
mysql:
|
||||
image: mysql:5.7
|
||||
container_name: pydio-db
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "3306:3306"
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: secret
|
||||
MYSQL_DATABASE: cells
|
||||
MYSQL_USER: pydio
|
||||
MYSQL_PASSWORD: secret
|
||||
command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci]
|
||||
volumes:
|
||||
- "./mysqldir:/var/lib/mysql"
|
||||
```
|
61
apps/cloud/seafile.md
Normal file
61
apps/cloud/seafile.md
Normal file
@ -0,0 +1,61 @@
|
||||
# Seafile
|
||||
- Too simple, just raw files nothing more.
|
||||
- Has mobile apps.
|
||||
|
||||
<br>
|
||||
|
||||
- [Homepage](https://www.seafile.com/en/home/)
|
||||
- [Github repo](https://github.com/haiwen/seafile)
|
||||
- [DockerHub repo](https://hub.docker.com/r/seafileltd/seafile-mc)
|
||||
- [Docs](https://download.seafile.com/d/320e8adf90fa43ad8fee/files/?p=%2Findex.md)
|
||||
|
||||
![Screenshot]()
|
||||
|
||||
|
||||
## docker-compose.yml
|
||||
```yml
|
||||
version: '2.0'
|
||||
services:
|
||||
db:
|
||||
image: mariadb:10.1
|
||||
container_name: seafile-mysql
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=db_dev # Requested, set the root's password of MySQL service.
|
||||
- MYSQL_LOG_CONSOLE=true
|
||||
volumes:
|
||||
- ./db:/var/lib/mysql # Requested, specifies the path to MySQL data persistent store.
|
||||
networks:
|
||||
- seafile-net
|
||||
|
||||
memcached:
|
||||
image: memcached:1.5.6
|
||||
container_name: seafile-memcached
|
||||
entrypoint: memcached -m 256
|
||||
networks:
|
||||
- seafile-net
|
||||
|
||||
seafile:
|
||||
image: seafileltd/seafile-mc:latest
|
||||
container_name: seafile
|
||||
ports:
|
||||
- "8080:80"
|
||||
# - "443:443" # If https is enabled, cancel the comment.
|
||||
volumes:
|
||||
- ./data:/shared # Requested, specifies the path to Seafile data persistent store.
|
||||
environment:
|
||||
- DB_HOST=db
|
||||
- DB_ROOT_PASSWD=db_dev # Requested, the value shuold be root's password of MySQL service.
|
||||
- TIME_ZONE=Europe/Dublin # Optional, default is UTC. Should be uncomment and set to your local time zone.
|
||||
- SEAFILE_ADMIN_EMAIL=me@example.com # Specifies Seafile admin user, default is 'me@example.com'.
|
||||
- SEAFILE_ADMIN_PASSWORD=asecret # Specifies Seafile admin password, default is 'asecret'.
|
||||
- SEAFILE_SERVER_LETSENCRYPT=false # Whether to use https or not.
|
||||
- SEAFILE_SERVER_HOSTNAME=docs.seafile.com # Specifies your host name if https is enabled.
|
||||
depends_on:
|
||||
- db
|
||||
- memcached
|
||||
networks:
|
||||
- seafile-net
|
||||
|
||||
networks:
|
||||
seafile-net:
|
||||
```
|
15
template.md
Normal file
15
template.md
Normal file
@ -0,0 +1,15 @@
|
||||
#
|
||||
- [Github repo]()
|
||||
- [DockerHub repo]()
|
||||
- [Docs]()
|
||||
|
||||
![Screenshot]()
|
||||
|
||||
|
||||
## docker-compose.yml
|
||||
```yml
|
||||
|
||||
```
|
||||
|
||||
|
||||
## Tips & Tricks
|
Loading…
Reference in New Issue
Block a user