Indice Serie Homelab
Libertà digitale: creare un ecosistema di servizi personali senza dipendere dalle big tech.
Dalle Foto al Workspace Digitale Link to heading
Nel precedente articolo abbiamo completato la migrazione da iCloud a Immich, conquistando il controllo totale delle nostre foto. Con foto e musica ormai gestite autonomamente, il prossimo passo è creare un workspace digitale completo: AFFiNE, una piattaforma all-in-one che combina note, whiteboard, database e funzionalità AI in un’unica soluzione self-hosted.
Container Dedicato per AFFiNE Link to heading
Seguendo l’approccio consolidato della serie, creiamo un container LXC dedicato esclusivamente ad AFFiNE. AFFiNE richiede più risorse rispetto a semplici app di note, dato che include rendering di whiteboard, AI features e database integrato.
Creazione Container AFFiNE Link to heading
Via Interfaccia Web Proxmox:
-
Create CT → General
- CT ID:
107
- Hostname:
affine
- Password: Impostare password sicura
- CT ID:
-
Template:
ubuntu-22.04-standard
-
Root Disk:
- Storage:
local-lvm
- Disk size:
8 GB
(minimo, dati su disco esterno)
- Storage:
-
CPU:
- Cores:
2
(AFFiNE raccomanda almeno 4 core, 2 core per uso singolo utente)
- Cores:
-
Memory:
- Memory:
4 GB
(AFFiNE è più esigente per AI e whiteboard) - Swap:
2 GB
- Memory:
-
Network:
- Bridge:
vmbr0
- IPv4:
Static
- IPv4/CIDR:
192.168.1.208/24
- Gateway:
192.168.1.1
- Firewall: ✓ Enabled
- Bridge:
Storage Strategy per AFFiNE Link to heading
AFFiNE gestisce non solo note testuali, ma anche whiteboard con elementi grafici, database e attachment vari. Tuttavia, per un utente singolo, i volumi rimangono gestibili. Manteniamo tutti i dati sul disco interno M.2 per massimizzare le performance del database PostgreSQL e Redis.
Setup Docker nel Container AFFiNE Link to heading
# Avviare il container
pct start 107
# Entrare nel container
pct enter 107
# Aggiornare sistema e installare Docker
apt update && apt install -y curl
curl -fsSL https://get.docker.com | sudo sh
usermod -aG docker $USER
# Verificare installazione
docker --version
# Riavviare per applicare gruppo docker
exit
pct reboot 107
pct enter 107
Preparazione Directory per AFFiNE Link to heading
# Creare struttura directory per AFFiNE sul disco interno
mkdir -p /opt/affine/{postgres,redis,storage}
# Verificare spazio disponibile su disco interno
df -h /
# Verificare permessi
ls -la /opt/affine/
Setup AFFiNE con Docker Compose Link to heading
AFFiNE richiede PostgreSQL e Redis per funzionare. Utilizziamo la configurazione ufficiale Docker Compose fornita dal progetto.
Step 1 - Download File Ufficiali Link to heading
# Creare directory di lavoro
mkdir -p /root/affine-app
cd /root/affine-app
# Scaricare docker-compose.yml ufficiale
wget -O docker-compose.yml https://github.com/toeverything/affine/releases/latest/download/docker-compose.yml
# Scaricare file .env di esempio
wget -O .env https://github.com/toeverything/affine/releases/latest/download/default.env.example
# Verificare download
ls -la
Step 2 - Personalizzazione File .env Link to heading
Il file .env
scaricato contiene tutte le variabili necessarie. Personalizziamolo per il nostro setup:
# Editare il file .env
nano .env
Configurazioni principali da modificare:
# URL base per accesso web
AFFINE_SERVER_HOST=192.168.1.208
AFFINE_SERVER_PORT=3010
# Database PostgreSQL
POSTGRES_USER=affine
POSTGRES_PASSWORD=affine_secure_password_456
POSTGRES_DB=affine
# Redis (mantieni default)
REDIS_HOST=redis
REDIS_PORT=6379
# Storage paths (personalizzati per nostro setup)
AFFINE_CONFIG_PATH=/opt/affine/storage
POSTGRES_DATA_PATH=/opt/affine/postgres
REDIS_DATA_PATH=/opt/affine/redis
# Feature flags (opzionali)
AFFINE_ADMIN_EMAIL=[email protected]
AFFINE_ADMIN_PASSWORD=admin_password_123
A-Za-z0-9_-
per evitare problemi di escape nei container.Step 3 - Verifica e Personalizzazione Docker Compose Link to heading
Il file docker-compose.yml
ufficiale è ben configurato, ma verifichiamo che usi i nostri path personalizzati:
# Verificare contenuto docker-compose.yml
cat docker-compose.yml
# Il file dovrebbe riferirsi alle variabili .env per i path
# Se necessario, possiamo modificare i volumi per puntare ai nostri path
Step 4 - Primo Avvio di AFFiNE Link to heading
# Dalla directory del progetto
cd /root/affine-app
# Verificare configurazione
docker compose config
# Primo pull delle immagini (può richiedere tempo)
docker compose pull
# Avvio servizi
docker compose up -d
# Verificare stato container
docker compose ps
# Dovremmo vedere 3 container running: affine, postgres, redis
Step 5 - Verifica Funzionamento Link to heading
# Controllare log del server AFFiNE
docker compose logs affine
# Dovremmo vedere messaggi come:
# "Server listening on port 3010"
# "Database connected successfully"
# Controllare log database e redis
docker compose logs postgres
docker compose logs redis
Accesso e Configurazione Iniziale Link to heading
AFFiNE dovrebbe essere accessibile su http://192.168.1.208:3010
.
Primo Accesso e Setup Link to heading
- Aprire browser e navigare a
http://192.168.1.208:3010
- Se è la prima volta, AFFiNE mostrerà la schermata di benvenuto
- Creare account:
- Email: [email protected]
- Password: Password sicura per l’admin
- Nome: Nome utente
- Confermare registrazione
Esplorazione Funzionalità AFFiNE Link to heading
AFFiNE combina diverse modalità di lavoro in un’unica interfaccia:
📝 Page Mode: Note tradizionali in stile Notion
- Blocchi di testo, immagini, tabelle
- Markdown support nativo
- Struttura gerarchica documenti
🎨 Edgeless Mode: Whiteboard infinito
- Canvas per diagrammi e brainstorming
- Elementi grafici e connessioni
- Ideale per mappe mentali
🗃️ Database Mode: Tabelle e viste
- Gestione dati strutturati
- Filtri e ordinamenti
- Viste multiple (tabella, kanban, calendario)
Prossimi Passi Link to heading
Con AFFiNE operativo, abbiamo aggiunto un workspace digitale completo al nostro ecosistema self-hosted. Non più solo note, ma un ambiente integrato per documenti, whiteboard, database e collaborazione - tutto sotto il nostro controllo.
AFFiNE rappresenta un salto qualitativo rispetto ai semplici note-taking app: combina la flessibilità di Notion, la creatività di Miro e la potenza di un database, il tutto in un’unica piattaforma self-hosted.
Il prossimo servizio nella roadmap homelab sarà la gestione documenti con Paperless-NGX, per digitalizzare e organizzare documenti fisici con OCR automatico, completando così la transizione verso un ufficio completamente digitale.
→ Continua con: Homelab: Paperless-NGX e Gestione Documenti