جدول محتوایی

Standard Notes یک برنامه یادداشت منبع باز و کاملاً رمزگذاری شده است. این برنامه به دو صورت رایگان و پولی ارائه میشود و هر دو، میزبانی ابری و گزینه میزبانی آن را در سرور شما ارائه می دهد. می توانید از سرور خود برای همگام سازی یادداشت های ذخیره شده و اشتراک گذاری فایل ها بین دستگاه های مختلف استفاده کنید. Standard Notes برنامه هایی را برای همه سیستم عامل های دسکتاپ و سیستم عامل های تلفن همراه ارائه می دهد.

در این آموزش، شما یاد خواهید گرفت که چگونه سرور standard notes خود را روی یک دستگاه اوبونتو 22.04 میزبانی کنید. همچنین یاد خواهید گرفت که چگونه ویژگی های طرح پولی و آپلود فایل ها را در نمونه خود میزبانی شده فعال کنید.

 

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

 

پیش نیاز ها :

  • سروری که اوبونتو 22.04 را با حداقل 2 گیگابایت رم اجرا می کند. (خرید سرور مجازی)
  • یک کاربر غیر ریشه با امتیازات sudo.
  • فایروال (UFW) فعال و در حال اجرا.
  • یک نام دامنه کاملاً واجد شرایط که به سرور اشاره دارد. برای این آموزش، از دامنه example.com استفاده خواهیم کرد. برای سرور فایل خود به نام دامنه دیگری نیاز دارید. ما از دامنه snotes-files.example.com استفاده خواهیم کرد.
  • همه چیز آپدیت باشد.
  • $ sudo apt update && sudo apt upgrade

 

1 – پیکربندی فایروال

اولین قدم قبل از نصب هر پکیج، پیکربندی فایروال است تا امکان اتصال HTTP و HTTPS را فراهم کند.

وضعیت فایروال را بررسی کنید.

$ sudo ufw status

 

شما باید چیزی شبیه به خروجی زیر را ببینید.

Status: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

 

پورت های HTTP و HTTP را مجاز کنید.

$ sudo ufw allow http$ sudo ufw allow https

 

برای اینکه مطمئن شویم وضعیت را دوباره بررسی کنید.

$ sudo ufw status
Status: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)

 

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

کلید رسمی GPG Docker را اضافه کنید.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg

 

دستور زیر را برای اضافه کردن مخزن Docker اجرا کنید.

$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

 

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

$ sudo apt update

 

Docker را نصب کنید.

$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

 

در این آموزش از افزونه Docker Compose v2 به جای باینری قدیمی استفاده میکنیم. بنابراین دستور اجرای آن از docker-compose به docker compose تغییر کرده است و این در اینجا منعکس شده است.

$ sudo usermod -aG docker ${USER}

متغیر ${USER} حساب سیستمی را که در حال حاضر وارد شده‌اید را انتخاب می‌کند. اگر با کاربری که می‌خواهید به آن امتیاز بدهید وارد نشده‌اید، نام کاربری را جایگزین ${USER} کنید.

برای درخواست عضویت گروه جدید، از سرور خارج شده و دوباره وارد شوید یا از دستور زیر استفاده کنید. از شما رمز عبور کاربر خواسته می شود.

$ su - $(USER)

 

3 – نصب Nginx

اوبونتو 22.04 با نسخه قدیمی Nginx عرضه می شود. برای نصب آخرین نسخه، باید مخزن رسمی Nginx را دانلود کنید.

کلید امضای Nginx را وارد کنید.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

 

مخزن نسخه پایدار Nginx را اضافه کنید.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

مخازن سیستم را به روز کنید.

$ sudo apt update

 

Nginx را نصب کنید.

$ sudo apt install nginx

 

نصب را تایید کنید.

$ nginx -vnginx version: nginx/1.22.0

 

 

4 – نصب SSL

برای تولید گواهی SSL باید Certbot را نصب کنیم. می توانید Certbot را با استفاده از مخزن اوبونتو نصب کنید یا با استفاده از ابزار Snapd آخرین نسخه را بگیرید. ما از نسخه Snapd استفاده خواهیم کرد.

اوبونتو 22.04 با Snapd به طور پیش فرض نصب شده است. دستورات زیر را اجرا کنید تا مطمئن شوید که نسخه Snapd شما به روز است.

$ sudo snap install core

 

Certbot را نصب کنید.

$ sudo snap install --classic certbot

 

از دستور زیر استفاده کنید تا اطمینان حاصل کنید که فرمان Certbot را می توان با ایجاد یک پیوند نمادین به پوشه /usr/bin اجرا کرد.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

 

برای تولید یک گواهی SSL دستور زیر را اجرا کنید.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d standardnotes.example.com

 

دستور بالا یک گواهی را در پوشه /etc/letsencrypt/live/standardnotes.example.com روی سرور شما دانلود می کند.

ما باید همین کار را برای زیر دامنه Files انجام دهیم.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d snotes-files.example.com

 

گواهی گروه Diffie-Hellman را ایجاد کنید.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

 

فایل /etc/letsencrypt/renewal/standardnotes.example.com.conf را برای ویرایش باز کنید.

$ sudo nano /etc/letsencrypt/renewal/standardnotes.example.com.conf

 

کد زیر را در پایین قرار دهید.

pre_hook = systemctl stop nginxpost_hook = systemctl start nginx

 

فایل را با فشار دادن Ctrl + X و وارد کردن Y در صورت درخواست ذخیره کنید.

همین مرحله را برای زیر دامنه فایل ها با ویرایش فایل /etc/letsencrypt/renewal/snotes-files.example.com.conf تکرار کنید.

ما گواهی SSL را با استفاده از گزینه مستقل Certbot تولید کرده ایم. وب سرور خود را برای ایجاد گواهی اجرا می کند که به این معنی است که Nginx باید در طول تمدید خاموش شود. دستورات pre_hook و post_hook قبل و بعد از تمدید اجرا می شوند تا به طور خودکار سرور Nginx را بسته و مجدداً راه اندازی کنند و در نتیجه نیازی به مداخله دستی ندارند.

برای بررسی اینکه آیا تمدید SSL به خوبی کار می‌کند، دستور زیر را اجرا کنید.

$ sudo certbot renew --dry-run

اگر هیچ خطایی مشاهده نکردید، یعنی همه چیز بدرستی انجام شده است. گواهی شما به طور خودکار تمدید می شود.

 

5 – دانلود و پیکربندی Standard Notes

مطمئن شوید که در فهرست اصلی سیستم خود هستید.

$ cd ~

مخزن استاندارد Standard Notes Standalone را شبیه سازی کنید.

$ git clone --single-branch --branch main https://github.com/standardnotes/standalone.git

 

به دایرکتوری دانلود شده بروید.

$ cd standalone

 

فایل های پیکربندی پیش فرض را برای سرور ایجاد کنید.

$ ./server.sh setup

 

با این کار فایل های محیطی پیش فرضی که باید پیکربندی کنیم ایجاد می شود. شما باید شش کلید مخفی مختلف تولید کنید. برای تولید آنها از دستورات زیر استفاده کنید.

$ openssl rand -hex 32

 

ابتدا باید فایل .env را در پوشه اصلی ویرایش کنیم. آن را برای ویرایش باز کنید.

$ nano .env

 

مقادیر متغیرهای زیر را تغییر دهید.

NODE_ENV=production
..
AUTH_JWT_SECRET=c0f5bcf6f0f0dcca5b9078c3095e4255a055dfd6376b376733af0e50483cc629
..
DB_USERNAME=std_notes_user
DB_PASSWORD=changeme123
..
VALET_TOKEN_SECRET=977c978ca1d5ea22fe2fda65058905b191f724e33db6e47d0a41e034a082cb3b
..
FILES_SERVER_URL=https://snotes-files.example.com

 

فایل را با فشار دادن Ctrl + X و وارد کردن Y در صورت درخواست ذخیره کنید.

سپس فایل docker/auth.env را باز کنید.

$ nano  docker/auth.env

 

مقادیر متغیرهای زیر را تغییر دهید.

AUTH_JWT_SECRET=c0f5bcf6f0f0dcca5b9078c3095e4255a055dfd6376b376733af0e50483cc629
..
DB_USERNAME=std_notes_user
DB_PASSWORD=changeme123
..
VALET_TOKEN_SECRET=977c978ca1d5ea22fe2fda65058905b191f724e33db6e47d0a41e034a082cb3b
..
FILES_SERVER_URL=https://snotes-files.example.com

 

فایل را با فشار دادن Ctrl + X و وارد کردن Y در صورت درخواست ذخیره کنید.

 

6 – راه اندازی سرور Standard Notes

دستور زیر را برای راه اندازی سرور standard Notes اجرا کنید.

$ ./server.sh start

 

تکمیل این دستور چند دقیقه طول می کشد. در طول این مدت، فرآیند تمام تصاویر Docker مربوطه را می کشد و کانتینرهایی برای همه سرویس ها ایجاد می کند. همچنین پایگاه داده را پر می کند و مهاجرت های مناسب را انجام می دهد.

با استفاده از دستور زیر می توانید گزارش های مربوط به فرآیند را بررسی کنید.

$ ./server.sh logs

 

Ctrl + C را فشار دهید تا از لاگ ها خارج شوید. با استفاده از دستور زیر می توانید وضعیت کانتینرهای در حال اجرا را بررسی کنید.

$ ./server.sh status

 

با استفاده از دستور زیر می توانید سلامت سرور را بررسی کنید.

$ curl http://localhost:3000/healthcheckOK

 

استاندارد Notes به طور پیش فرض از پورت 3000 استفاده می کند. اگر پورت دیگری را در فایل .env پیکربندی کرده اید، باید آن را در دستور بالا به روز کنید.

 

7 – پیکربندی Nginx

فایل /etc/nginx/nginx.conf را برای ویرایش باز کنید.

$ sudo nano /etc/nginx/nginx.conf

 

خط زیر را قبل از خط شامل /etc/nginx/conf.d/*.conf; اضافه کنید.

server_names_hash_bucket_size  64;

 

فایل را با فشار دادن Ctrl + X و وارد کردن Y در صورت درخواست ذخیره کنید.

فایل /etc/nginx/conf.d/standardnotes.conf را برای ویرایش ایجاد و باز کنید.

$ sudo nano /etc/nginx/conf.d/standardnotes.conf

 

کد زیر را در آن قرار دهید. نام دامنه خود را جایگزین standardnotes.example.com کنید. ما مقدار client_max_body_size را 50 مگابایت قرار داده ایم. شما می توانید آن را بر اساس نیاز خود تغییر دهید.

client_max_body_size 50M;

فایل را با فشار دادن Ctrl + X و وارد کردن Y در صورت درخواست ذخیره کنید.

 

پیکربندی Nginx خود را تأیید کنید.

$ sudo nginx -t

 

سرور Nginx را مجددا راه اندازی کنید تا فایل های پیکربندی فعال شوند.

$ sudo systemctl restart nginx

 

 

8 – استفاده از Standard Notes

اگر URL https://standardnotes.example.com را در مرورگر خود باز کنید، باید خروجی زیر را ببینید.

این به این معنی است که سرور شما فعال است. برای استفاده از یادداشت های استاندارد، باید از برنامه های رسمی استفاده کنید. در این آموزش، از برنامه وب آنها استفاده خواهیم کرد اما روش برای برنامه های دسکتاپ و تلفن همراه یکسان خواهد ماند.

برای دسترسی به برنامه وب، URL https://app.standardnotes.com را باز کنید. روی لینک ایجاد حساب کاربری رایگان در سمت چپ پایین صفحه کلیک کنید و آدرس ایمیل و رمز عبور خود را وارد کنید. روی دکمه Advanced features کلیک کنید و تیک گزینه Custom sync server را بردارید و آدرس  https://standardnotes.example.com را در کادر بنویسید.

محیط کلاینت standard Notes

 

پس از ورود به سیستم، می توانید شروع به ایجاد یادداشت و استفاده از برنامه کنید.

 

9 – فعال کردن ویژگی های پولی Standard Notes

تا کنون، ما عملکرد اولیه را برای برنامه استاندارد Notes فعال کرده ایم. این برنامه برخی از ویژگی های پیشرفته مانند فرمت های یادداشت های متعدد، فضای ذخیره سازی ابری رمزگذاری شده، تاریخچه ویرایش طولانی تر و موارد دیگر را ارائه می دهد.

برای برنامه میزبانی شده در فضای ابری، می‌توانید مستقیماً برای فعال کردن ویژگی‌های پیشرفته پرداخت کنید. اما برای برنامه خود میزبانی، نمی توانید برای ویژگی های پیشرفته هزینه کنید زیرا برنامه پرداخت کار نمی کند. هر چند می توانید آنها را اهدا کنید. اما برای فعال کردن ویژگی‌های پولی در یک برنامه خود میزبانی، باید دستور زیر را از دایرکتوری استاندارد Notes اجرا کنید.

$ cd ~/standardnotes
$ bash ./server.sh create-subscription [email protected]

 

برنامه وب را دوباره بارگیری کنید و ویژگی های پولی باید برای حساب شما فعال شوند.

 

10 – پیکربندی سرور Standard Notes

آپلود فایل یکی از ویژگی های پولی Standard Notes است. ما URL API سفارشی را برای آپلود فایل ها فعال کرده ایم. اما باز هم کار نخواهند کرد. برای اینکه آنها کار کنند، باید مجوزهای مناسبی را به فهرست آپلودها بدهیم. آپلودها در دایرکتوری ~/standardnotes/data/uploads ذخیره می شوند. برای تغییر مجوزها دستورات زیر را اجرا کنید.

$ chmod -R 775 data
$ mkdir -p data/uploads
$ sudo chmod -R 755 data/uploads
$ sudo chown -R 1001.1001 data/uploads

 

اکنون، Standard Notes صفر را به عنوان محدودیت آپلود برای هر کاربر تعیین می کند. این بدان معناست که هیچ کاربری نمی تواند فایل ها را آپلود کند مگر اینکه سهمیه ای به صورت دستی داده شود. بنابراین آخرین مرحله در انجام بارگذاری فایل، فعال کردن سهمیه فایل برای حساب کاربری پولی است. ما می توانیم این کار را با انجام یک پرس و جوی SQL در داخل کانتینر دیتابیس انجام دهیم.

وارد پوسته MySQL در داخل کانتینر دیتابیس شوید.

$ docker exec -it db-standalone mysql -u std_notes_user -p
Enter password:

 

پس از ورود به پوسته MySQL، اجازه دهید لیست دیتابیس ها را بررسی کنیم.

mysql > show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| standard_notes_db |
+--------------------+
2 rows in set (0.00 sec)

 

به دیتابیس Standard Notes بروید.

mysql > use standard_notes_db;

 

دستور SQL زیر را اجرا کنید تا یک سهمیه فایل 10 گیگابایتی به کاربر پولی فعال شده در بالا اضافه کنید.

mysql> INSERT INTO subscription_settings(uuid, name, value, created_at, updated_at, user_subscription_uuid) VALUES (UUID(), "FILE_UPLOAD_BYTES_LIMIT", 10737418240, FLOOR(UNIX_TIMESTAMP(NOW(6))*1000000), FLOOR(UNIX_TIMESTAMP(NOW(6))*1000000), (SELECT us.uuid FROM user_subscriptions us INNER JOIN users u ON us.user_uuid=u.uuid WHERE u.email="[email protected]"));

در اینجا 10737418240 به کل بایت ها اشاره دارد که به 10 گیگابایت ترجمه می شود. می توانید این شماره را به هر مقداری که نیاز دارید تغییر دهید.

خروج از پوسته دیتابیس:

mysql > exit

 

تست آپلود فایل

وارد برنامه وب Standard Notes شوید و روی آیکون پیوست در ردیف بالا کلیک کنید.

تست آپلود فایل

بر روی دکمه Upload Files کلیک کنید و فایلی را که می خواهید آپلود کنید انتخاب کنید. فایل با موفقیت آپلود می شود و با کلیک مجدد روی نماد می توانید آن را در لیست مشاهده کنید.

ضمیمه کردن فایل standard notes

روی سه نقطه مقابل نام فایل کلیک کنید تا گزینه های اضافی مربوط به فایل ظاهر شوند.

گزینه های فایل

برای افزودن تصویر به یادداشت، روی پیوند Attach to Note کلیک کنید. گزینه های باقی مانده خود توضیحی هستند.

 

اگر به یک سرور مجازی لینوکس اوبونتو احتیاج دارید میتوانید آن را در صفحه خرید سرور مجازی ایران در ایرانیکاسرور سفارش دهید.

 

نتیجه گیری

در این آموزش ما نحوه نصب و پیکربندی سرور Standard Notes در یک VPS اوبونتو 22.04 صحبت کردیم. اگر سوالی دارید، در نظرات مطرح کنید.

11رای - امتیاز 4.6 ممنون از امتیازی که دادید..!

دسته بندی شده در: