Ghid Complet: MinIO Object Storage (S3 Privat pe VPS)
Un ghid elaborat despre cum transformi serverul tău într-un hub de stocare de obiecte performant, scalabil și 100% compatibil cu standardul Amazon S3.
💡 De ce ai nevoie de MinIO în arhitectura ta?
Într-o aplicație modernă, stocarea fișierelor (imagini, avataruri, PDF-uri, documente sau backup-uri) direct pe hard disk-ul local unde rulează codul (Java/Python) este o practică nesigură și greu de scalat. Dacă vrei să muți aplicația pe mai multe containere, fișierele s-ar pierde.
Poți folosi orice librărie standard de AWS S3 din Python (boto3) sau Java (AWS SDK) fără modificări majore.
Datele tale rămân pe propriul VPS (63.250.40.142), fără riscul unor scurgeri de date către terți sau costuri lunare ascunse.
Scris în limbajul Go, MinIO consumă puține resurse și gestionează fișiere mari cu o viteză uimitoare.
Pasul 1. Instalarea și Rularea prin Docker
Pornim containerul MinIO pe VPS. Portul 9000 este destinat pentru traficul API (aplicații), iar portul 9001 pentru interfața grafică web de management.
docker run -d \
--name minio \
--restart always \
-p 9000:9000 \
-p 9001:9001 \
-v /var/data/minio:/data \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=ParolaTaSuperSigura123!" \
minio/minio server /data --console-address ":9001"
Pasul 2. Setarea Caddy Proxy pentru acces HTTPS
Pentru a accesa serverul în siguranță prin subdomenii, actualizăm fișierul /etc/caddy/Caddyfile:
s3.bytebook.xyz {
reverse_proxy localhost:9000
}
s3-console.bytebook.xyz {
reverse_proxy localhost:9001
}
Pasul 3. Integrarea în Codul Python
Cum se conectează o aplicație Python la noul tău server S3 privat folosind pachetul boto3:
import boto3
# Inițializare client S3 orientat către MinIO pe VPS
s3_client = boto3.client(
's3',
endpoint_url='https://s3.bytebook.xyz',
aws_access_key_id='admin',
aws_secret_access_key='ParolaTaSuperSigura123!'
)
# Încărcare efectivă a unui fișier în bucket-ul dedicat
bucket_name = 'user-uploads'
file_name = 'document.pdf'
try:
s3_client.upload_file(file_name, bucket_name, f"docs/{file_name}")
print("Succes: Fișierul a fost urcat pe MinIO!")
except Exception as e:
print(f"Eroare la upload: {e}")