Indexul jurnaluluiDockup / notă de teren
Note / self-host-filebrowser

Cum să găzduiești File Browser pe cont propriu în 2026: volume, conturi și partajare sigură

Un ghid practic pentru găzduirea File Browser pe cont propriu, cu Docker, porturi, date persistente, TLS, securitate, backupuri și problemele care împiedică utilizarea în producție.

Privește File Browser ca pe un sistem mic, nu ca pe o imagine Docker. Obiectivul orientat către utilizator este clar pentru File Browser: un manager de fișiere web pentru un volum atașat; implementarea este acceptabilă doar atunci când poți crea un utilizator cu acces restricționat, poți încărca și redenumi un fișier, edita text, genera un share și confirma că utilizatorul nu poate ieși din root-ul alocat.

Această distincție identifică problema cu care se confruntă operatorii după testarea locală: fișierele montate folosesc permisiuni de pe host pe care containerul nu le poate citi. De asemenea, face planul de backup și upgrade suficient de concret pentru a putea fi testat.

Identifică fiecare octet persistent din File Browser

O imagine de container poate fi descărcată din nou; fișierele servite, împreună cu baza de date și setările File Browser, nu pot fi recuperate astfel. Montează /srv înainte de bootstrap, scrie date de test inofensive și înlocuiește containerul pentru a demonstra că acea cale este într-adevăr persistentă. Inspectează mount-ul efectiv în loc să te bazezi pe numele din Compose și verifică dacă utilizatorul runtime poate scrie acolo unde se așteaptă File Browser.

Alege perioada de retenție și o destinație off-host, apoi exersează recuperarea fără să atingi producția. Exercițiul este reușit doar atunci când fișierele servite, utilizatorii, scope-urile, share-urile și setările sunt restaurate, iar un cont restricționat rămâne izolat. Pentru starea bazată pe baze de date, combină snapshot-urile de storage cu exporturi consistente la nivel de aplicație, așa cum este descris în recuperarea point-in-time versus snapshot-uri.

Rulează prima instanță configurată ca pentru producție

Păstrează prima invocare File Browser suficient de reproductibilă pentru a putea fi verificată într-un pull request.

docker run -d \
  --name file-browser \
  --restart unless-stopped \
  -p 127.0.0.1:80:80 \
  -v file-browser-data:/srv \
  -v file-browser-db:/database \
  -v file-browser-config:/config \
  filebrowser/filebrowser:latest

Nu te baza pe latest după ce există date reale. Salvează digest-ul funcțional, utilizatorul containerului și proprietarul mount-urilor. Urmărește log-ul aplicației pe durata unui test complet — creează un utilizator cu acces restricționat, încarcă și redenumește un fișier, editează text, generează un share și confirmă că utilizatorul nu poate ieși din root-ul alocat — și notează orice migration înainte de a pune ruta în spatele traficului de producție.

Stabilește limita runtime-ului File Browser

Starea procesului și starea produsului sunt lucruri separate pentru File Browser. Portul 80 poate răspunde, în timp ce tranzacția orientată către utilizator eșuează. Cerința locală de runtime este o cale persistentă separată pentru baza de date și setările sale. Valideaz-o folosind workload-ul de acceptanță; un health check inactiv nu poate demonstra că resursa este suficientă.

Folosește acest exercițiu de readiness după modificări importante de configurare: creează un utilizator cu acces restricționat, încarcă și redenumește un fișier, editează text, generează un share și confirmă că utilizatorul nu poate ieși din root-ul alocat. Nu include verificări externe costisitoare în probele de liveness, pentru ca o întrerupere la un provider să nu provoace un restart loop. Planificarea capacității ar trebui să urmărească throughput-ul discului subiacent, dimensiunea uploadurilor, numărul de downloaduri concurente și numărul de directoare, indicatori mai apropiați de presiunea reală asupra File Browser decât numărul de request-uri către pagini.

Fă origin-ul public neambiguu

Expune un singur hostname HTTPS pentru File Browser și păstrează portul brut 80 privat. Publică interfața prin HTTPS, dar limitează cu atenție root-ul servit. Astfel, browserele și clienții API nu vor afla două adrese concurente.

De pe un client curat, rulează tranzacția validată și inspectează primul request care eșuează. Folosește ghidul pentru domenii personalizate când DNS-ul sau TLS-ul nu sunt configurate corect. Tratează problema „fișierele montate folosesc permisiuni de pe host pe care containerul nu le poate citi” ca pe un diagnostic separat la nivelul aplicației, după ce ruta a fost confirmată.

Criteriile de lansare pentru File Browser

Creează un fixture File Browser mic și efemer și păstrează-l pentru fiecare release. Fixture-ul ar trebui să testeze workflow-ul real: creează un utilizator cu acces restricționat, încarcă și redenumește un fișier, editează text, generează un share și confirmă că utilizatorul nu poate ieși din root-ul alocat. Notează digest-ul imaginii, hostname-ul extern, adresa dependenței și rezultatul așteptat, astfel încât un operator ulterior să poată repeta testul fără să interpreteze acest ghid.

Rulează fixture-ul de trei ori. Mai întâi, folosește deployment-ul proaspăt. Apoi, înlocuiește containerul fără să atingi starea persistentă. În final, restaurează backupul într-un mediu gol. A treia rulare este reușită doar atunci când fișierele servite, utilizatorii, scope-urile, share-urile și setările sunt restaurate, iar un cont restricționat rămâne izolat. În fiecare rulare, capturează latența și utilizarea resurselor în raport cu throughput-ul discului subiacent, dimensiunea uploadurilor, numărul de downloaduri concurente și numărul de directoare; acestea devin baza pentru alerte, nu un procent CPU ales arbitrar.

În final, testează intenționat calea negativă: trimite date inofensive aproape de limita de resurse sau de format asociată acestei granițe: fișierele montate folosesc permisiuni de pe host pe care containerul nu le poate citi. Confirmă că File Browser eșuează vizibil fără să corupă starea, restabilește condiția corectă și repetă tranzacția reușită. Un release record care conține aceste patru rezultate este o dovadă mai solidă decât capturile unui dashboard sau un răspuns curl obținut o singură dată.

Verificări de capacitate și upgrade

Un health check inactiv spune puține lucruri despre File Browser. Monitorizează throughput-ul discului subiacent, dimensiunea uploadurilor, numărul de downloaduri concurente și numărul de directoare, apoi declanșează alerte pe simptomul resimțit de utilizatori: eșecul acțiunii „creează un utilizator cu acces restricționat, încarcă și redenumește un fișier, editează text, generează un share și confirmă că utilizatorul nu poate ieși din root-ul alocat”. Păstrează liveness local și rapid; lasă readiness să raporteze migration-urile sau inițializarea fără să provoace un restart storm.

Zona riscantă la upgrade este faptul că migration-urile bazei de date și ale setărilor File Browser contează, chiar dacă fișierele servite se află pe un mount separat. Citește release notes, creează un snapshot al stării, fă deploy versiunii țintă peste o copie restaurată și repetă acțiunea de acceptanță. Dacă fișierele montate folosesc permisiuni de pe host pe care containerul nu le poate citi, corelează request-ul clientului cu primul log relevant al aplicației în loc să ștergi starea sau să adaugi redirect-uri la întâmplare.

Redu autoritatea deținută de File Browser

Credențialele de bootstrap sunt temporare; modelul de încredere este permanent. În cazul File Browser, evită să servești / sau un director de secrete în locul unui share dedicat și servește un director dedicat, nu root-ul hostului; oferă fiecărui cont cel mai restrâns scope de fișiere de care are nevoie.

File Browser nu are un secret de bootstrap obligatoriu în această configurație de bază; protejează contul său efectiv de administrator sau autentificarea upstream. Rulează imaginea fără capabilități Linux inutile și expune doar ruta publică a aplicației. Păstrează vizibilă activitatea administratorilor fără să înregistrezi valorile secrete.

Folosește Dockup pentru stratul de platformă

Pentru File Browser, Dockup este cel mai util la granița dintre o imagine și un serviciu persistent. Păstrează ruta către 80, TLS-ul, valorile secretelor și storage-ul atașate în timpul înlocuirii containerelor, indiferent dacă infrastructura de compute aparține Dockup sau serverului tău atașat.

Încheie cu informații specifice aplicației: publică interfața prin HTTPS, dar limitează cu atenție root-ul servit; confirmă cerința locală — o cale persistentă separată pentru baza de date și setările sale; și rulează această verificare: creează un utilizator cu acces restricționat, încarcă și redenumește un fișier, editează text, generează un share și confirmă că utilizatorul nu poate ieși din root-ul alocat. Păstrează rezultatul ca verificare de deployment, astfel încât următorul update al imaginii să fie evaluat după comportament, nu după statusul containerului.

Întrebări frecvente

De ce are nevoie File Browser pentru un deployment în producție?

Direcționează containerul File Browser de pe portul 80 printr-un singur origin HTTPS. Cerința locală de runtime este o cale persistentă separată pentru baza de date și setările sale. Nu considera File Browser pregătit până când nu poți crea un utilizator cu acces restricționat, încărca și redenumi un fișier, edita text, genera un share și confirma că utilizatorul nu poate ieși din root-ul alocat.

Ce date File Browser trebuie incluse într-un backup?

Persistă /srv și include fișierele servite, împreună cu baza de date și setările File Browser, în același manifest de recuperare. O restaurare File Browser curată este reușită doar atunci când fișierele servite, utilizatorii, scope-urile, share-urile și setările sunt restaurate, iar un cont restricționat rămâne izolat.

Are File Browser nevoie de HTTPS în spatele unui reverse proxy?

Folosește HTTPS pentru origin-ul public File Browser și păstrează portul 80 pe ruta internă. Aplică corect setarea File Browser: publică interfața prin HTTPS, dar limitează cu atenție root-ul servit. Pentru File Browser, HTTPS protejează credențialele sau conținutul utilizatorilor în tranzit și păstrează consecvent comportamentul clientului sensibil la origin.

Cum ar trebui testat un upgrade File Browser?

Restaurează starea curentă File Browser într-un deployment izolat, aplică versiunea candidată și repetă tranzacția de acceptanță. Acordă o atenție deosebită acestui aspect, deoarece migration-urile bazei de date și ale setărilor File Browser contează, chiar dacă fișierele servite se află pe un mount separat. Păstrează imaginea File Browser anterioară până când limitele migration-ului de date și ale rollback-ului sunt înțelese.