Immich روی VPS: راه‌اندازی فضای ابری شخصی برای عکس‌ها و ویدیوها

2 دقیقه خواندن
Tropic
Immich روی VPS: راه‌اندازی فضای ابری شخصی برای عکس‌ها و ویدیوها

Language: fa

Immich: راه‌اندازی فضای ابری شخصی برای عکس‌ها و ویدیوها روی VPS

Immich سرویسی با میزبانی شخصی برای ذخیره‌سازی و بارگذاری خودکار عکس‌ها و ویدیوهاست. این سرویس اپلیکیشن موبایل، رابط وب، آلبوم، جست‌وجوی هوشمند و تشخیص چهره دارد و در عین حال کتابخانه شما را روی سروری که خودتان انتخاب می‌کنید نگه می‌دارد.

در ادامه نیازمندی‌های Immich، نصب آن روی Ubuntu با Docker Compose، راه‌اندازی HTTPS، اتصال تلفن و پشتیبان‌گیری خارجی را بررسی می‌کنیم.

Immich در شش مرحله

  1. یک VPS لینوکسی با RAM و فضای دیسک کافی ایجاد کنید.
  2. زیردامنه‌ای مانند photos.example.com را به آدرس IP سرور هدایت کنید.
  3. Docker را نصب کنید و پیکربندی رسمی Immich را دانلود کنید.
  4. مسیر کتابخانه رسانه و پایگاه داده را مشخص کنید و کانتینرها را اجرا کنید.
  5. پورت داخلی را ببندید و HTTPS را فعال کنید.
  6. اپلیکیشن موبایل را نصب کنید و پشتیبان‌گیری خارجی را تنظیم کنید.

Immich چیست؟

Immich یک اپلیکیشن متن‌باز برای مدیریت کتابخانه شخصی عکس و ویدیو است. عکس‌ها در یک خط زمانی نمایش داده می‌شوند، می‌توان آن‌ها را در آلبوم‌ها گروه‌بندی کرد، از طریق جست‌وجو پیدا کرد و به‌طور خودکار از تلفن به سرور فرستاد.

تفاوت اصلی با سرویس‌های ابری معمول عکس، کنترل سمت سرور است. فایل‌ها روی VPS یا سرور خانگی شما ذخیره می‌شوند، اما مسئولیت فضای خالی، به‌روزرسانی‌ها، امنیت و پشتیبان‌گیری بر عهده مالک است.

پارامترسرویس ابری عکسImmich
محل ذخیره فایل‌هازیرساخت ارائه‌دهندهسرور شما
نگهداریتوسط ارائه‌دهنده انجام می‌شودتوسط مالک انجام می‌شود
هزینه‌هاطرح بر اساس فضای ذخیره‌سازیVPS، فضای دیسک و پشتیبان‌ها

Immich به‌تنهایی پشتیبان‌گیری نیست. اگر عکس‌ها فقط روی یک VPS وجود داشته باشند، خرابی دیسک یا حذف تصادفی همچنان می‌تواند آرشیو را از بین ببرد.

قابلیت‌های اصلی Immich

  • بارگذاری خودکار. اپلیکیشن‌های Android و iOS عکس‌ها و ویدیوهای آلبوم‌های انتخاب‌شده را بارگذاری می‌کنند. به‌طور پیش‌فرض از Wi-Fi استفاده می‌شود و فایل‌های موجود بر اساس checksum دوباره ارسال نمی‌شوند.
  • جست‌وجوی هوشمند. سرویس می‌تواند بر اساس افراد، مکان، تاریخ، دوربین، متن داخل تصویر و توضیح محتوا جست‌وجو کند. چهره‌ها گروه‌بندی می‌شوند و سپس می‌توان برای آن‌ها نام تعیین کرد.
  • آلبوم و اشتراک‌گذاری. Immich از چند کاربر، آلبوم‌های مشترک، اشتراک‌گذاری با شریک و لینک‌های عمومی دارای رمز عبور و تاریخ انقضا پشتیبانی می‌کند.
  • نقشه و فراداده. Immich داده‌های EXIF را می‌خواند، محل ثبت عکس را نمایش می‌دهد، خاطرات ایجاد می‌کند و از علاقه‌مندی‌ها، بایگانی و کتابخانه‌های خارجی پشتیبانی می‌کند.

یادگیری ماشین بیشترین بار را هنگام وارد کردن اولیه روی CPU و RAM می‌گذارد. پس از تولید تصاویر بندانگشتی و ایندکس‌ها، مصرف منابع روزمره معمولاً کمتر است.

نیازمندی‌های سرور Immich

نیازمندی‌های رسمی نسخه‌های فعلی عبارت‌اند از:

  • سیستم ۶۴ بیتی Linux یا مشابه Unix؛
  • حداقل ۲ هسته CPU و ۴ هسته پیشنهادی؛
  • حداقل ۶ GB RAM و ۸ GB پیشنهادی؛
  • Docker Engine همراه با پلاگین docker compose؛
  • یک SSD محلی برای پایگاه داده PostgreSQL؛
  • فضای کافی برای فایل‌های اصلی، تصاویر بندانگشتی و ویدیوهای تبدیل‌شده.

Immich در سروری با ۴ GB RAM نیز اجرا می‌شود، به شرطی که قابلیت‌های یادگیری ماشین غیرفعال باشند. برای تشخیص چهره و جست‌وجوی هوشمند بهتر است از ابتدا ۸ GB انتخاب کنید.

تصاویر بندانگشتی و فایل‌های تبدیل‌شده به‌طور میانگین ۱۰ تا ۲۰ درصد به اندازه کتابخانه رسانه اضافه می‌کنند. برای آرشیوی ۲۰۰ GB دست‌کم ۲۴۰ تا ۲۶۰ GB فضا در نظر بگیرید. پوشه پایگاه داده DB_DATA_LOCATION باید روی SSD محلی ذخیره شود، نه درایو شبکه.

یک پیکربندی عملی برای شروع شامل ۴ vCPU، هشت GB RAM، Ubuntu 24.04 LTS و SSD با ظرفیت ۲۰ تا ۳۰ درصد بیشتر از کتابخانه اصلی است. کارت گرافیک اختصاصی لازم نیست، هرچند می‌تواند پردازش آرشیو بزرگ را سریع‌تر کند.

نحوه نصب Immich روی VPS

در این مثال از Ubuntu 24.04 و زیردامنه photos.example.com استفاده می‌شود.

۱. DNS را تنظیم و Ubuntu را آماده کنید

یک رکورد A DNS ایجاد کنید که به آدرس IPv4 مربوط به VPS اشاره کند. سپس از طریق SSH متصل شوید:

ssh root@SERVER_IP
apt update && apt upgrade -y

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

تا زمانی که کارکرد اتصال جدید را بررسی نکرده‌اید، نشست فعلی SSH را نبندید.

۲. Docker و Docker Compose را نصب کنید

apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc

tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

apt update
apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin
docker compose version

دقیقاً از دستور docker compose استفاده کنید؛ دستور قدیمی docker-compose دیگر توسط پروژه پشتیبانی نمی‌شود.

۳. Immich را دانلود و پیکربندی کنید

mkdir -p /opt/immich /srv/immich-data
cd /opt/immich

curl -L -o docker-compose.yml \
  https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
curl -L -o .env \
  https://github.com/immich-app/immich/releases/latest/download/example.env

فایل را باز کنید:

nano /opt/immich/.env

پارامترهای اصلی را تغییر دهید:

UPLOAD_LOCATION=/srv/immich-data
DB_DATA_LOCATION=/opt/immich/postgres
TZ=Europe/Berlin
DB_PASSWORD=REPLACE_WITH_A_LONG_PASSWORD

منطقه زمانی خود را وارد کنید. رمز PostgreSQL باید شامل حروف لاتین و عدد باشد؛ دستور openssl rand -hex 24 یک مقدار تصادفی تولید می‌کند. خطوط دیگر را همان‌طور که در فایل فعلی example.env هستند نگه دارید.

۴. پورت داخلی را ببندید و کانتینرها را اجرا کنید

در docker-compose.yml پورت سرویس immich-server را پیدا کنید:

ports:
  - '2283:2283'

آن را با این مقدار جایگزین کنید:

ports:
  - '127.0.0.1:2283:2283'

اکنون پورت فقط از داخل خود VPS قابل دسترسی است. سرویس را اجرا کنید:

cd /opt/immich
docker compose up -d
docker compose ps

برای عیب‌یابی از docker compose logs --tail=200 استفاده کنید.

۵. HTTPS را با Caddy فعال کنید

apt install -y caddy

cat > /etc/caddy/Caddyfile <<'EOF'
photos.example.com {
    reverse_proxy 127.0.0.1:2283
}
EOF

caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddy

اگر DNS به VPS اشاره کند و پورت‌های ۸۰ و ۴۴۳ در دسترس باشند، Caddy به‌طور خودکار گواهی درخواست می‌کند. Immich باید در ریشه دامنه یا زیردامنه اجرا شود؛ آدرسی مانند example.com/immich پشتیبانی نمی‌شود.

۶. مدیر را ایجاد و تلفن را متصل کنید

https://photos.example.com را باز کنید. نخستین کاربری که ثبت‌نام می‌کند مدیر می‌شود و می‌تواند حساب‌های بیشتری ایجاد کند.

Immich را از App Store یا Google Play نصب کنید. در صفحه ورود، آدرس را بدون /api وارد کنید:

https://photos.example.com

آلبوم‌ها را انتخاب و پشتیبان‌گیری را فعال کنید. وارد کردن اولیه ممکن است زمان ببرد: سرور تصاویر بندانگشتی تولید می‌کند، چهره‌ها را تشخیص می‌دهد، داده‌های جست‌وجو را ایندکس می‌کند و ویدیوها را پردازش می‌کند.

به‌روزرسانی Immich

پیش از به‌روزرسانی، یادداشت‌های انتشار را بخوانید، به‌خصوص هنگام انتقال به نسخه اصلی جدید:

cd /opt/immich
docker compose pull
docker compose up -d
docker image prune

ابتدا اپلیکیشن‌های موبایل و سپس سرور را به‌روزرسانی کنید. بازگرداندن پایگاه داده به نسخه قدیمی ممکن است پشتیبانی نشود، مگر این‌که دستورالعمل جداگانه‌ای ارائه شده باشد.

پشتیبان‌گیری از Immich

Immich به‌طور خودکار dumpهای PostgreSQL را ایجاد می‌کند، اما آن‌ها فقط پایگاه داده و فراداده را شامل می‌شوند، نه عکس‌ها و ویدیوها را. برای بازیابی کامل، این موارد را ذخیره کنید:

  • کل پوشه /srv/immich-data؛
  • فایل‌های /opt/immich/.env و docker-compose.yml؛
  • پیکربندی Caddy.

کپی روی همان VPS در برابر خرابی دیسک یا حذف سرور محافظت نمی‌کند. داده‌ها را به سرور، NAS یا فضای ذخیره‌سازی اشیای جداگانه ارسال کنید و از راهبرد پشتیبان‌گیری 3-2-1 پیروی کنید. به‌صورت دوره‌ای بازیابی را آزمایش کنید و فقط به وجود فایل‌های پشتیبان اکتفا نکنید.

کدام VPS را برای Immich انتخاب کنیم؟

برای امکانات کامل همراه با تشخیص چهره و جست‌وجوی هوشمند، انتخاب VPS با دست‌کم ۴ vCPU و ۸ GB RAM منطقی است. اندازه دیسک را بر اساس کتابخانه رسانه محاسبه کنید و برای تصاویر بندانگشتی، ویدیوها و رشد آرشیو ظرفیت اضافه در نظر بگیرید.

یک VPS لینوکسی از tropic.host با IP ثابت و فضای ذخیره‌سازی SSD برای این کار مناسب است. می‌توانید با پیکربندی ۸ GB RAM شروع کنید و هم‌زمان با بزرگ شدن کتابخانه منابع را افزایش دهید. پایگاه داده PostgreSQL را روی دیسک محلی سریع نگه دارید و پشتیبان را خارج از این VPS ذخیره کنید.

VPS برای دسترسی شبانه‌روزی از هر شبکه‌ای مناسب است. برای آرشیوی چند ترابایتی، سرور خانگی شاید ارزان‌تر باشد، اما تأمین برق، دسترسی خارجی و افزونگی را باید خودتان انجام دهید.

محدودیت‌های Immich

میزبانی شخصی به‌تنهایی قابلیت اطمینان را تضمین نمی‌کند. رمز ضعیف، پورت باز ۲۲۸۳، کانتینرهای قدیمی یا نبود پشتیبان خارجی خطر از دست رفتن داده را ایجاد می‌کند.

Immich کپی کاملی از Google Photos یا iCloud هم نیست: قابلیت‌های ویرایش و همگام‌سازی پس‌زمینه متفاوت‌اند و سرعت تحلیل به سخت‌افزار وابسته است. پیش از انتقال تنها آرشیو خود، سرویس را با یک کتابخانه کوچک آزمایش کنید.

جمع‌بندی

Immich به شما امکان می‌دهد گالری شخصی خود را با بارگذاری موبایل، آلبوم، تشخیص چهره، جست‌وجو و اشتراک‌گذاری بسازید. برای نسخه فعلی بهتر است VPS لینوکسی با ۴ هسته، ۸ GB RAM و SSD با حداقل ۲۰ تا ۳۰ درصد ظرفیت آزاد آماده کنید.

پس از نصب، HTTPS، به‌روزرسانی‌ها و پشتیبان خارجی از پوشه رسانه را همراه با پایگاه داده تنظیم کنید. این پشتیبان است، نه صرفاً میزبانی شخصی، که عکس‌ها را در برابر از دست رفتن محافظت می‌کند.

FAQ

آیا Immich رایگان است؟

سرور Immich متن‌باز است و بدون اشتراک اجباری اجرا می‌شود. با این حال باید هزینه VPS، دامنه، فضای دیسک و پشتیبان‌ها را بپردازید.

Immich به چه مقدار RAM نیاز دارد؟

حداقل رسمی ۶ GB RAM است و ۸ GB توصیه می‌شود. با ۴ GB باید یادگیری ماشین را غیرفعال کنید.

آیا Immich بدون دامنه نصب می‌شود؟

از نظر فنی بله، اما برای دسترسی دائمی از تلفن بهتر است از دامنه و HTTPS استفاده کنید. این کار احراز هویت و انتقال فایل‌ها را محافظت می‌کند.

آیا Immich جایگزین پشتیبان‌گیری عکس می‌شود؟

خیر. کتابخانه رسانه و پایگاه داده را جداگانه روی دستگاه یا مکان دیگری کپی کنید.

آیا می‌توان آرشیو عکس موجود را منتقل کرد؟

بله. فایل‌ها را می‌توان از طریق رابط وب یا CLI بارگذاری کرد، یا یک پوشه را به‌عنوان کتابخانه خارجی متصل کرد. پیش از وارد کردن گسترده، از داده‌های اصلی کپی تهیه کنید.