OneNetworks OneNetworks Lab

Kronika Rodzinna cyfrowe archiwum zdjęć, dokumentów i wspomnień

Porządkujemy rodzinne zbiory: fotografie, skany dokumentów, nagrania i opowieści. Całość działa w sieci LAN, z pełną kontrolą i bez ekspozycji w Internecie.

Archiwum rodzinne (przykładowe zdjęcie)

Zdjęcie poglądowe (Unsplash) — podmień na własny kadr.

Założenia

  • Bezpieczne przechowywanie zasobów rodzinnych w LAN.
  • Wyszukiwanie, tagowanie i wygodna nawigacja.
  • Otwarte technologie: Linux, Docker, Piwigo, Nextcloud, PeerTube, TubeArchivist.
  • Prosta rozbudowa i przenoszenie (kontenery).
4
usługi końcowe: Piwigo, Nextcloud, PeerTube, TubeArchivist
15+
kontenerów (z DB/Redis/Proxy)
:80
reverse-proxy Traefik z routingiem po hostach
LAN
dostęp wyłącznie lokalny (publicznie — tylko demo)

Zasoby

Galeria zdjęć (Piwigo)

LAN

Albumy rodzinne, tagi, wyszukiwanie, metadane EXIF.

Dokumenty (Nextcloud)

LAN

Skany, PDF-y, arkusze; wersjonowanie i udostępnianie wewnętrzne.

Nagrania wideo (PeerTube)

LAN

Wspomnienia, wywiady, wydarzenia — wideo w LAN.

Wyróżniony album (demo)

tu możesz wkleić iframe Piwigo z publicznym albumem demo

Embed Piwigo — publiczny album demonstracyjny

Sprzęt i storage

Host

  • Model: Dell OptiPlex 3050
  • CPU: Intel i3-7100 (2C/4T, 3.9 GHz)
  • RAM: 4 GB DDR4-2400 (DIMM2 wolny)
  • OS: Debian 12 • kernel 6.1
snapshot RAW (lscpu / free)
CPU: Intel(R) Core(TM) i3-7100 @ 3.90GHz • 2C/4T
RAM: 3.7Gi total • 2.8Gi used • 0.76Gi free • swap 1.5/3.0Gi
Płyta: Dell 0W0CHX (OptiPlex 3050)
DIMM: 1×4GB DDR4-2400, HMA851U6AFR6N-UH (DIMM2 wolny)

Dyski i system plików

  • SSD SATA: ADATA SP900 240 GB/ (23 GB 39%), /var (29 GB 45%), /home (179 GB 46%)
  • HDD 4 TB: HGST ext4 → /mnt/kronika (1% użycia)
  • HDD 4 TB: Hitachi NTFS → /mnt/4tb (77%)
  • NVMe 477 GB: ADATA LEGEND 710 (NTFS, nieużywany w Linux)
  • Dodatkowy magazyn: drugi HGST 4 TB (na półce / do wpięcia do DIY klatki)
snapshot RAW (lsblk / df -hT)
/dev/sdc: / 23G 39% • /var 29G 45% • /home 179G 46%
/dev/sda1: 3.6T ext4 → /mnt/kronika (1%)
/dev/sdb1: 3.7T NTFS → /mnt/4tb (77%)
/dev/nvme0n1p1: 477G NTFS (niezamontowany)

Docker – przestrzeń

  • Driver: overlay2
  • Root dir: /var/lib/docker (~21 GB)
  • Images: 17 (~10.5 GB), Volumes: 26 (niewielkie użycie)
snapshot RAW (docker system df)
Images: 10.47GB • Containers: 30.12MB • Volumes: 2.0MB
/var/lib/docker użycie: ~21G

DIY klatka na dyski 3.5"

Własnoręcznie zbudowana klatka na HDD 3.5", podłączona do płyty gł. przez SATA. Sekcja dysków zasilana dedykowanym PSU (odciążenie zasilacza głównego).

  • Aktualnie: 2 × HGST 4 TB + 1 × Hitachi 4 TB
  • Chłodzenie pasywno-aktywne (przepływ wzdłuż koszy)
  • Plan: kontroler SATA/HBA na PCIe (tandem rozbudowy)
diagram DIY (schemat)
┌───────────────┐      ┌───────────────┐
│  Płyta gł.    │──────│  Klatka DIY   │
│   (SATA)      │      │   3.5" HDD    │
└───────────────┘      └───────────────┘
         │                     │
         │       ┌─────────────┘
         │       │ Zasilanie (dedykowany PSU)
         ▼       ▼
     Kontroler SATA / HBA (planowana rozbudowa)

Plany rozbudowy

RAM

► Dołożenie do 8 GB (minimum) lub 16 GB (optymalnie) — mniej swapu, stabilniejszy ES/Nextcloud/PeerTube.

  • ES po rozbudowie: ES_JAVA_OPTS="-Xms1g -Xmx1g"
  • Gdy nie indeksujesz — wyłącz ES, odzyskasz RAM

Storage

► Przenieś /var/lib/docker na NVMe (ext4/btrfs) — szybsze I/O i start kontenerów.
► Jeśli /mnt/4tb zostaje w Linux — rozważ ext4 zamiast NTFS.

  • Snapshoty katalogów + dumpy baz (cron)
  • SMART/temperatury HDD pod nadzorem

Budżet domowy w LAN

Firefly III

Zaawansowany: konta, kategorie, reguły, raporty, importy CSV/QIF.

# Traefik (przykład)
traefik.enable=true
traefik.http.routers.firefly.entrypoints=web
traefik.http.routers.firefly.rule=Host(`budzet.onenetworks.pl`)
traefik.http.services.firefly.loadbalancer.server.port=8080

Actual Budget (server)

Lekki serwer budżetu, nowoczesny UI, praca offline w LAN.

# Traefik (przykład)
traefik.enable=true
traefik.http.routers.actual.rule=Host(`finanse.onenetworks.pl`)
traefik.http.services.actual.loadbalancer.server.port=5006

Utrzymanie

  • Backup bazy (cron + dump)
  • Snapshoty wolumenów
  • Dostęp tylko z LAN (Traefik + UFW)

Dashboard (snapshot)

Snapshot z:
Host
kronika.onenetworks.local
Debian 12 • kernel 6.1
RAM
3.8 GB
użyte ~3.2 GB • swap 1.1/3.0 GB
Dysk root
23 GB
39% zajętości
Kontenery
15 running
Traefik, Piwigo(+DB), Nextcloud(+DB), PeerTube(+PG+Redis), TubeArchivist(+ES+Redis), WordPress(+DB), Joomla(+DB)

Docker – usługi

docker ps
Podgląd
nextcloud_app (80:10080), nextcloud_db
piwigo, piwigo-db
peertube_app (9000), peertube_db, peertube_redis
traefik (80,8080)
archivist, archivist_es, archivist_redis
portainer (8000,9443)
wordpress (12020), wordpress-db
joomla (12010), joomla-db

Docker – zasoby

docker stats — snapshot
RAW
archivist_es: ~1.09 GiB, archivist: ~526 MiB, peertube_app: ~158 MiB
DB (MariaDB/Postgres): ~175 MiB każdy
pozostałe: kilkanaście–kilkadziesiąt MiB

Routing (Traefik)

labels
  • kronika.onenetworks.pl → Piwigo:80
  • pliki.onenetworks.pl → Nextcloud:80
  • video.onenetworks.pl → PeerTube:9000
  • archivist.onenetworks.pl → TubeArchivist:8000
  • traefik.kronika.localhost → dashboard:8080
RAW (docker inspect traefik)
--providers.docker.exposedbydefault=false
--entrypoints.web.address=:80
ports: 80/tcp, 8080/tcp
networks: traefik (172.22.0.5), piwigo-net (172.23.0.4)

Firewall

ufw + DOCKER-USER

Polityki: INPUT: DROP, FORWARD: DROP, OUTPUT: ACCEPT

Otwarty LAN 10.0.0.0/24 na 80/443, SSH 22/tcp, plus porty usług (proxy).

RAW (ufw status numbered + iptables -S)
[1] 22/tcp ALLOW IN Anywhere
[2] 80 ALLOW IN 10.0.0.0/24
[3] 443 ALLOW IN 10.0.0.0/24
[4] 80/tcp ALLOW IN Anywhere
[5] 443/tcp ALLOW IN Anywhere
...
-A DOCKER-USER -j RETURN

Sieć i porty

ss/ip/route
  • Adres: 10.0.0.7/24, brama 10.0.0.1
  • Listening (wybrane): :80, :8080, :9443, :10080, :12010, :12020
  • Mosty Docker: 172.17/16, 172.18/16, …
RAW (ss -lntup, ip -br a, ip r)
tcp LISTEN 0.0.0.0:80 docker-proxy
tcp LISTEN 0.0.0.0:8080 docker-proxy
tcp LISTEN 0.0.0.0:9443 docker-proxy
enp2s0 10.0.0.7/24
default via 10.0.0.1 dev enp2s0
…

System

uname/free/df/uptime
  • Linux 6.1.0-38-amd64, Debian 12
  • Uptime: ~32 min (snapshot)
  • Root: /dev/sdc2 23G 39%
RAW
Linux kronika.onenetworks.local 6.1.0-38-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.147-1 (2025-08-02) x86_64 GNU/Linux
Pamięć: 3795 MB • użyte 3225 MB • wolne 133 MB • swap 3024 MB (użyte 1154 MB)
/dev/sdc2 23G 8.3G 14G 39% /
uptime: load average 0.00 0.09 0.18

Uwaga: to statyczny snapshot. Automatyzację (cron + skrypt generujący sekcje RAW) można dodać później.

Jak to zbudowaliśmy

Architektura (upraszczona)

DNS / Edge (Cloudflare) Traefik (entrypoint :80) Piwigo :80 Nextcloud :80 PeerTube :9000 TubeArchivist :8000 DB / Redis

Rzeczywiste sieci Docker: 172.17/18/19/…; routing host-based przez Traefika.

Showcase

Piwigo — album demo
Piwigo — album „Rok 1978” (demo)
Nextcloud — dokumenty demo
Nextcloud — katalog „Skan archiwum” (demo)
PeerTube — wideo demo
PeerTube — krótki tour (demo)

Szybki tour (90s)

osadź link do nagrania demo z PeerTube
Tu wklej iframe z PeerTube

Snapshot środowiska (demo, zanonimizowany)

Kontenery (skrócone)

traefik            Up   0.0.0.0:80->80/tcp, 0.0.0.0:8080->8080/tcp
piwigo             Up   :80
piwigo-db          Up   :3306
nextcloud_app      Up   0.0.0.0:10080->80/tcp
nextcloud_db       Up   :3306
peertube_app       Up   :9000
peertube_db        Up   :5432
peertube_redis     Up   :6379
archivist          Up   :8000
archivist_es       Up   :9200
archivist_redis    Up   :6379
portainer          Up   0.0.0.0:9443->9443/tcp
wordpress          Up   0.0.0.0:12020->80/tcp
joomla             Up   0.0.0.0:12010->80/tcp

Firewall (wycinek)

UFW: allow 22/tcp
UFW: allow 80/tcp (ANY) + LAN
UFW: allow 443/tcp (ANY) + LAN
DOCKER-USER: RETURN (polityka własna reguł)
INPUT: RELATED,ESTABLISHED ACCEPT; reszta DROP

Powyższe to przykład zanonimizowanego snapshotu (bez prywatnych IP/hostów).

Roadmapa

  • Automatyczny eksport snapshotu (cron) → sekcja na stronie
  • Eksport albumów „na pendrive” (offline share)
  • Mini-OCR w Nextcloud dla skanów
  • Starter repo (compose + labels) do uruchomienia w domu

Changelog

  • 2025-09-02 — dodano showcase + diagram, sekcję „W skrócie”.
  • 2025-08-10 — PeerTube + TubeArchivist.
  • 2025-08-01 — Piwigo + Nextcloud.

FAQ

Czy to działa offline?

Tak. Usługi są dostępne w LAN; publicznie pokazujemy tylko demo.

Jakie technologie?

Docker + Traefik, aplikacje: Piwigo, Nextcloud, PeerTube, TubeArchivist.

Czy udostępniacie instrukcje?

Tak — planujemy publiczny starter bez prywatnych danych.