Seafile adalah open source file-hosting dan sistem penyimpanan cloud dengan fungsi-fungsi lanjutan seperti sinkronisasi dari berbagai platform (sistem lintas platform), perlindungan privasi dengan enkripsi file built-in, dan dukungan untuk Two-Factor Authentication (TFA), kontrol versi, penguncian file, pengeditan online, dan banyak lagi. Seafile ditulis dalam bahasa pemrograman C dan Python dan menyediakan fitur serupa seperti Dropbox, mega.co.nz, dan lainnya.
Dalam tutorial ini, saya akan menunjukkan kepada Anda langkah demi langkah cara menginstal dan mengkonfigurasi server Seafile dengan server web Nginx dan database MySQL. Kami akan menginstal server seafile di bawah server web Nginx dengan HTTPS SSL Letsencrypt diaktifkan, menggunakan MySQL 5.8 terbaru pada sistem Ubuntu 18.04.
Prasyarat
- Ubuntu 18.04
- Hak istimewa root
Apa yang akan kita lakukan?
- Instal Ketergantungan Seafile Python
- Instal dan Konfigurasi MySQL
- Unduh Server Seafile untuk Sistem Linux
- Instal Server Seafile
- Instal Nginx dan Letsencrypt
- Konfigurasikan Nginx sebagai Proxy-Terbalik untuk Server Seafile
- Konfigurasi Server Seafile
- Menjalankan Server Seafile sebagai Layanan
- Konfigurasikan Firewall UFW
- Pengujian
Langkah 1 - Instal Ketergantungan Python Seafile
Langkah pertama yang harus kita lakukan sebelum menginstal seafile server pada sistem adalah menginstal dependensinya. Seafile adalah aplikasi berbasis python, dan membutuhkan python 2.7 untuk berjalan di server.
Sebelum menginstal paket apa pun, kita perlu memperbarui repositori Ubuntu.
sudo apt update
Sekarang instal python 2.7 dengan semua dependensi yang diperlukan untuk instalasi server seafile menggunakan perintah apt di bawah ini.
sudo apt install python -y
sudo apt install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache python-requests -yTunggu hingga semua dependensi dipasang.
Langkah 2 - Instal dan Konfigurasi MySQL
Seafile menawarkan dukungan untuk SQLite dan server database MySQL. Untuk panduan ini, kita akan menggunakan server database MySQL untuk instalasi kita. Kami akan menerapkan server seafile menggunakan MySQL versi 5.8 terbaru.
Instal server MySQL menggunakan perintah apt di bawah ini.
sudo apt install mysql-server mysql-client -ySetelah instalasi selesai, jalankan layanan MySQL dan aktifkan untuk diluncurkan setiap kali sistem boot.
systemctl start mysql
systemctl aktifkan mysqlServer MySQL diinstal pada sistem Ubuntu.
Sekarang kita perlu mengkonfigurasi kata sandi root MySQL menggunakan perintah 'mysql_secure_installation'.
mysql_secure_installationSekarang Anda akan ditanya tentang kebijakan kata sandi MySQL, 0 untuk RENDAH, 1 untuk SEDANG, dan 2 untuk KUAT. Ketik nomor '1' untuk kebijakan sandi MENENGAH, tekan enter, lalu ketik sandi aman Anda.
Untuk yang lainnya, ketik saja 'Y' seperti gambar di bawah ini.
Hapus pengguna anonim? (Tekan y|Y untuk Ya, tombol lain untuk Tidak):YLarang login root dari jarak jauh? (Tekan y|Y untuk Ya, tombol lain untuk Tidak):YHapus database pengujian dan akses ke sana? (Tekan y|Y untuk Ya, ada kunci lain untuk Tidak):YMuat ulang tabel hak istimewa sekarang? (Tekan y|Y untuk Ya, tombol lain untuk Tidak) :YPengaturan kata sandi root MySQL telah selesai.
Selanjutnya, kita akan membuat database baru untuk server Seafile. Kami akan membuat 3 database untuk setiap komponen seafile dan membuat pengguna database baru. Kami akan membuat pengguna baru bernama 'seafile' dan itu akan memiliki semua hak istimewa untuk semua 3 database 'ccnet-db', 'seafile-db', dan 'seahub-db'.
Masuk ke shell MySQL menggunakan perintah klien MySQL.
mysql -u root -pSekarang buat database baru 'ccnet-db', 'seafile-db', 'seahub-db', dan buat pengguna baru 'seafile'. Kemudian berikan semua 3 hak istimewa basis data kepada pengguna 'seafile'.
Jalankan kueri MySQL di bawah ini.
buat database `ccnet-db` character set ='utf8';
buat database `seafile-db` character set ='utf8';
buat database `seahub-db` character set =' utf8';
buat pengguna 'seafile'@'localhost' yang diidentifikasi dengan '[email protected]';
BERIKAN SEMUA HAK ISTIMEWA PADA `ccnet-db`.* ke ` seafile`@localhost;
BERIKAN SEMUA HAK ISTIMEWA `seafile-db`.* ke `seafile`@localhost;
BERIKAN SEMUA HAK ISTIMEWA `seahub-db`.* ke `seafile`@localhost;
Server MySQL telah diinstal, kata sandi root telah diatur, dan database untuk instalasi seafile telah dibuat.
Langkah 3 - Unduh Seafile Server untuk Sistem Linux
Dalam tutorial ini, server seafile akan berjalan sebagai layanan pada sistem systemd, dan akan berjalan di bawah pengguna non-root.
Buat pengguna baru bernama 'mohammad'.
useradd -m -s /bin/bash mohammadSekarang login user 'mohammad' dan download server seafile versi terbaru menggunakan wget.
su - mohammad
wget https://download.seadrive.org/seafile-server_6.2.5_x86-64.tar.gzEkstrak file 'seafile-server.tar.gz' dan ubah nama direktori master menjadi 'seafile-server'.
tar -xf seafile-server_6.2.5_x86-64.tar.gz
mv seafile-server-6.2.5/ seafile-server/Kode sumber server seafile telah diunduh ke direktori '/home/mohammad/seafile-server'.
Langkah 4 - Instal Seafile Server dengan MySQL
Pada langkah ini, kita akan menginstal server seafile menggunakan skrip setup MySQL yang disediakan oleh Seafile.
Masuk sebagai pengguna 'mohammad' dan buka direktori 'seafile-server'.
su - mohammad
cd seafile-server/Sekarang jalankan skrip 'setup-seafile-mysql.sh'.
./setup-seafile-mysql.shSkrip instalasi akan melakukan pemeriksaan modul python. Pastikan semua dependensi terinstal, lalu tekan Enter.
Sekarang Anda akan masuk ke konfigurasi Seafile.
- nama server:masukkan nama server file laut Anda seperti 'hakase-cloud'.
- nama domain server:ketik nama domain untuk server seafile Anda 'cloud.hakase-labs.io'.
- direktori data seafile:biarkan konfigurasi default dan tekan enter.
- port server file seafile:biarkan pada port default '8082'.
Sekarang untuk konfigurasi database. Anda akan diminta untuk 2 opsi:biarkan skrip membuat database untuk Anda, atau gunakan database yang sudah ada.
Pilih opsi '2' untuk menggunakan pengaturan database yang ada.
- host basis data:host lokal default
- port database:default pada port normal mysql '3306'
- pengguna database adalah 'seafile' dengan sandi '[email protected]'
- basis data ccnet:'ccnet-db'
- basis data seafile:'seafile-db'
- database seahub:'seahub-db'
Sekarang tekan enter lagi untuk mengkonfirmasi konfigurasi server seafile kita.
Dan ketika instalasi selesai, Anda akan mendapatkan hasil seperti gambar di bawah ini.
Instalasi dan konfigurasi server seafile telah berhasil diselesaikan. Dan file server seafile akan berjalan di bawah port '8082', layanan seahub akan berjalan di bawah port '8000'.
Selanjutnya kita akan menguji untuk menjalankan seafile server dan seahub server menggunakan start script.
Sebagai pengguna 'mohammad', buka direktori '~/seafile-server-latest'.
su - mohammad
cd ~/seafile-server-latest/
Sekarang jalankan server seafile dengan menjalankan perintah di bawah ini.
./seafile.sh mulai
Kemudian jalankan server seahub.
./seahub.sh mulai
Saat pertama kali menjalankan skrip start 'seahub.sh', Anda akan diminta untuk membuat pengguna admin dan kata sandi untuk server seafile.
Ketik email dan kata sandi admin Anda, lalu tekan Enter.
Dan pengguna dan kata sandi admin telah dibuat - sekarang periksa port layanan seafile dan seahub '8082' dan '8080' menggunakan perintah netstat.
netstat -plntu
Dan Anda akan melihat server seafile dan server seahub aktif dan berjalan di sistem Ubuntu 18.04.
Sekarang hentikan server seafile dan seahub.
./seafile.sh stop
./seahub.sh stop
Langkah 5 - Instal dan Konfigurasi Nginx dengan Letsencrypt
Untuk panduan ini, server seafile akan berjalan di bawah server web Nginx dengan HTTPS diaktifkan. Dan pada langkah ini, kita akan menginstal server web Nginx dan alat Letsencrypt, kemudian membuat SSL letsencrypt dan kunci DHPARAM untuk nama domain server seafile.
Instal server web Nginx menggunakan perintah apt di bawah ini.
sudo apt install nginx -y
Setelah penginstalan selesai, mulai layanan Nginx dan aktifkan untuk diluncurkan setiap kali sistem boot.
systemctl start nginx
systemctl aktifkan nginx
Sekarang instal alat letsencrypt untuk membuat sertifikat SSL letsencrypt.
sudo apt install letsencrypt -y
Server web Nginx dan alat letsencrypt telah diinstal.
Selanjutnya, masuk ke direktori '/etc/nginx' dan buat file konfigurasi baru 'certbot.conf' untuk letsencrypt.
cd /etc/nginx/
vim snippets/certbot.conf
Tempelkan konfigurasi berikut di sana.
lokasi /.well-known { alias /var/www/html/.well-known;}
Simpan dan keluar.
Edit file host virtual default.
vim sites-available/default
Tambahkan baris include berikut di bawah ini ke braket 'server {...}'.
sertakan snippets/certbot.conf;
Simpan dan keluar.
Uji konfigurasi nginx dan mulai ulang server web.
nginx -t
systemctl restart nginx
Dan kami siap untuk membuat sertifikat SSL letsencrypt baru untuk nama domain server seafile.
Buat file sertifikat SSL menggunakan perintah 'certbot' seperti yang ditunjukkan di bawah ini.
certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email [dilindungi email] -w /var/www/html -d cloud.hakase-labs .io
Catatan:
- kami akan membuat sertifikat SSL baru dan menentukan ukuran kunci ke '4096'.
Sekarang Anda akan mendapatkan semua file sertifikat SSL yang terletak di direktori '/etc/letsencrypt/live'.
Dan untuk keamanan tambahan, kami akan membuat kunci Diffie-Hellman dengan ukuran 4096 menggunakan perintah OpenSSL.
openssl dhparam -out /etc/nginx/dhparam.pem 4096
Semua sertifikat yang dibutuhkan telah dibuat.
Langkah 6 - Konfigurasi Nginx sebagai Reverse-Proxy untuk Seafile Server
Buka direktori konfigurasi '/etc/nginx' dan buat file host virtual baru 'seafile' menggunakan vim.
cd /etc/nginx/
vim sites-available/seafile
Tempelkan konfigurasi berikut di sana.
server { dengarkan 80; server_name cloud.hakase-labs.io; tulis ulang ^ https://$http_host$request_uri? permanen; server_token nonaktif; } server { dengarkan 443 ssl http2; server_name cloud.hakase-labs.io; ssl aktif; ssl_certificate /etc/letsencrypt/live/cloud.hakase-labs.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/cloud.hakase-labs.io/privkey.pem; ssl_session_timeout 5m; ssl_session_cache dibagikan:SSL:5m; ssl_dhparam /etc/nginx/dhparam.pem; #SSL Keamanan ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-SHA256-CMAES128-G RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; ssl_ecdh_curve secp384r1; ssl_prefer_server_ciphers aktif; server_token nonaktif; ssl_session_tickets mati; proxy_set_header X-Diteruskan-Untuk $remote_addr; lokasi / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Diteruskan-Untuk $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; proxy_read_timeout 1200s; # digunakan untuk melihat/mengedit file office melalui Office Online Server client_max_body_size 0; access_log /var/log/nginx/seahub.access.log; error_log /var/log/nginx/seahub.error.log; } lokasi /seafhttp { tulis ulang ^/seafhttp(.*)$ $1 break; proxy_pass http://127.0.0.1:8082; client_max_body_size 0; proxy_set_header X-Diteruskan-Untuk $proxy_add_x_forwarded_for; proxy_connect_timeout 36000s; proxy_read_timeout 36000s; proxy_send_timeout 36000s; send_timeout 36000 detik; } lokasi /media { root /home/mohammad/seafile-server-latest/seahub; } }
Simpan dan keluar.
Aktifkan host virtual seafile dan uji konfigurasi.
ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -t
pastikan tidak ada kesalahan dan mulai ulang layanan nginx.
systemctl restart nginx
Konfigurasi Nginx sebagai reverse-proxy untuk server seafile telah selesai.
Langkah 7 - Konfigurasi Server Seafile
Untuk menjalankan server seafile di bawah nama domain server web Nginx, kita perlu mengedit konfigurasi default 'seafile' untuk 'ccnet service', 'seafile server' dan 'seahub server'.
Masuk sebagai pengguna 'mohammad' dan buka direktori 'conf/'.
su - mohammad
cd conf/
Edit file konfigurasi layanan ccnet 'ccnet.conf'.
vim ccnet.conf
Pada baris 'SERVICE_URL', ubah nilainya menjadi nama domain dengan HTTPS seperti di bawah ini.
SERVICE_URL =https://cloud.hakase-labs.io
Simpan dan keluar.
Sekarang edit file 'seafile.conf' untuk konfigurasi server seafile.
vim seafile.conf
Tambahkan baris 'host' dengan nilai '127.0.0.1' localhost seperti di bawah ini.
[fileserver]host =127.0.0.1port =8082
Simpan dan keluar.
Dan terakhir, kita akan mengedit file 'seahub_settings.py'.
vim seahub_settings.py
Pada baris 'FILE_SERVER_ROOT', ubah nilainya menjadi nama domain dengan HTTPS.
FILE_SERVER_ROOT ='https://cloud.hakase-labs.io/seafhttp'
Simpan dan keluar.
Langkah 8 - Menjalankan Server Seafile sebagai Layanan
Dalam tutorial ini, kita akan menjalankan server seafile sebagai layanan pada sistem Ubuntu 18.04. Kami akan membuat skrip layanan baru untuk seafile dan seahub.
Buka direktori '/etc/systemd/system' dan buat file layanan baru 'seafile.service'.
cd /etc/systemd/system/
vim seafile.service
Rekatkan skrip layanan seafile berikut di sana.
[Unit]Description=SeafileAfter=network.target mysql.service[Service]Type=forkingExecStart=/home/mohammad/seafile-server-latest/seafile.sh startExecStop=/home/mohammad/seafile-server-latest/ seafile.sh stopUser=mohammadGroup=mohammad[Install]WantedBy=multi-user.target
Simpan dan keluar.
Sekarang buat file layanan seahub 'seahub.service'.
vim seahub.service
Rekatkan skrip layanan seahub berikut di sana.
[Unit]Description=Seafile hubAfter=network.target seafile.service[Service]Type=forkingExecStart=/home/mohammad/seafile-server-latest/seahub.sh startExecStop=/home/mohammad/seafile-server-latest /seahub.sh stopUser=mohammadGroup=mohammad[Install]WantedBy=multi-user.target
Simpan dan keluar.
Catatan:
- Ubah jalur skrip seafile.sh dan seahub.sh.
Sekarang muat ulang sistem systemd.
systemctl daemon-reload
Dan mulai layanan seafile dan seahub.
systemctl start seafile
systemctl start seahub
Aktifkan layanan ini untuk diluncurkan setiap kali saat sistem boot.
systemctl aktifkan seafile
systemctl aktifkan seahub
Layanan seafile dan seahub aktif dan berjalan - periksa menggunakan perintah di bawah ini.
systemctl status seafile
systemctl status seahub
netstat -plntu
Langkah 8 - Konfigurasi Firewall UFW
Direkomendasikan untuk selalu menyalakan firewall pada sistem apapun. Untuk sistem ubuntu, kami akan mengaktifkan firewall UFW dan menambahkan port SSH, HTTP, dan HTTPS di dalamnya.
Tambahkan port 'ssh' dan aktifkan firewall UFW.
ufw izinkan ssh
ufw aktifkan
ketik 'y' untuk mengaktifkan firewall.
Sekarang tambahkan layanan HTTP dan HTTPS.
ufw izinkan http
ufw izinkan https
Periksa daftar aturan di firewall.
status ufw diberi nomor
Dan Anda akan mendapatkan tiga layanan SSH, HTTP, dan HTTPS dalam daftar.
Langkah 9 - Pengujian
Buka browser web Anda dan ketik instalasi URL server seafile. Milik saya adalah:
http://cloud.hakase-labs.io/
Dan Anda akan diarahkan ke halaman login koneksi HTTPS yang aman.
Ketik email admin '[email protected]' dan sandi 'mypassword', lalu klik tombol 'Login'.
Sekarang Anda akan mendapatkan dashboard seafile seperti di bawah ini.
Tambahan - mengunggah gambar dan tampilan di dasbor seafile.
Instalasi dan konfigurasi server seafile dengan server web Nginx dan Letsencrypt di Ubuntu 18.04 telah berhasil diselesaikan.