Seafile adalah perangkat lunak cloud pribadi yang menyediakan fitur serupa seperti Dropbox, mega.co.nz, dan lainnya, hanya dihosting di server Anda sendiri. Seafile didasarkan pada bahasa pemrograman python dan dirilis di bawah lisensi open source sehingga Anda dapat membuat cloud pribadi Anda sendiri dan itu akan jauh lebih aman.
Seafile mendukung enkripsi untuk menyimpan data Anda dengan aman. Untuk mengenkripsi file di perpustakaan penyimpanan, Anda perlu mengatur kata sandi saat membuat perpustakaan. Kata sandi tidak akan disimpan di cloud Seafile. Jadi, bahkan administrator server tidak dapat melihat data terenkripsi Anda tanpa kata sandi.
Dalam tutorial ini, saya akan menginstal Seafile di CentOS 7 dengan web server Nginx dan MariaDB sebagai database server.
Prasyarat
- Server CentOS 7
- Hak istimewa root
Langkah 1 - Siapkan CentOS untuk Seafile
Masuk ke server centOS dengan kata sandi root ssh Anda.
ssh [email protected]
TYPE YOUR PASSWORD
Edit file konfigurasi SELinux dengan vim.
vim /etc/sysconfig/selinux
Ganti nilai 'enforcing' dengan 'disabled'.
SELINUX=disabled
Simpan file dan keluar dari editor.
Reboot server untuk menerapkan perubahan kebijakan SELinux.
reboot
Tunggu server di-boot ulang, lalu login kembali ke server Anda sebagai pengguna root.
Periksa selinux dengan perintah di bawah ini:
getenforce
Anda akan melihat 'Dinonaktifkan ' sebagai hasilnya.
Langkah 2 - Instal Ketergantungan Seafile
Seafile didasarkan pada python, jadi kita perlu menginstal python untuk instalasi terlebih dahulu. Seafile memiliki dukungan untuk database SQLite dan MySQL/MariaDB, saya akan menggunakan MariaDB sebagai database untuk seafile di sini karena memberikan kinerja yang lebih baik daripada SQLite. Nginx digunakan sebagai proxy terbalik untuk Seafile dan Seahub.
Pada langkah ini, kita akan menginstal beberapa paket python, MariaDB dan Nginx. Kami mulai dengan instalasi repositori EPEL di server CentOS kami.
yum -y install epel-release
Selanjutnya, instal python paket, MariaDB dan Nginx.
yum -y install python-imaging MySQL-python python-simplejson python-setuptools mariadb mariadb-server nginx
Tunggu hingga semua paket terinstal.
Langkah 3 - Konfigurasi MariaDB
Pada langkah 2, kita sudah menginstal server MariaDB, kita hanya perlu memulai layanan dan mengkonfigurasi kata sandi root sekarang.
Mulai MariaDB dan konfigurasikan kata sandi root dengan perintah di bawah ini:
systemctl start mariadb
mysql_secure_installation
Ketikkan kata sandi root Anda.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Kata sandi root MariaDB telah dikonfigurasi dan kita dapat masuk ke shell mysql sekarang.
Pemberitahuan:Shell baris perintah MariaDB diberi nama mysql.
Kami akan membuat 3 database untuk seafile:
- ccnet_db
- seafile_db
- seahub_db
Dan kami akan membuat pengguna baru 'seacloud ' dengan kata sandi 'kata sandi Anda '. Ganti kata sandi Anda dengan kata sandi yang aman!
Masuk ke shell mysql dengan klien mysql.
mysql -u root -p
TYPE YOUR PASSWORD
Jalankan kueri mysql di bawah untuk membuat database dan pengguna untuk instalasi seafile.
create database ccnet_db character set = 'utf8';
create database seafile_db character set = 'utf8';
create database seahub_db character set = 'utf8';
create user [email protected] identified by 'yourpassword';
grant all privileges on ccnet_db.* to [email protected] identified by 'yourpassword';
grant all privileges on seafile_db.* to [email protected] identified by 'yourpassword';
grant all privileges on seahub_db.* to [email protected] identified by 'yourpassword';
flush privileges;
exit
Ganti kata sandi Anda pada perintah di atas dengan kata sandi Anda sendiri.
Langkah 4 - Instal Seafile
Pada langkah ini, kita akan menginstal Seafile. Seafile akan dieksekusi di bawah pengguna nginx sehingga kita dapat menggunakan nginx sebagai proxy terbalik untuk layanan seafile dan seahub.
Kami akan menginstal seafile di bawah pengguna nginx di direktori '/var/www/seafile', buat direktori itu dan masukkan dengan cd.
mkdir -p /var/www/seafile
cd /var/www/seafile
Unduh Seafile dengan perintah wget, dan ekstrak arsip yang diunduh.
wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_6.0.5_x86-64.tar.gz
tar -xzvf seafile-server_6.0.5_x86-64.tar.gz
Ubah nama direktori menjadi 'seafile-server' dan alihkan ke direktori tersebut.
mv seafile-server-6.0.5 seafile-server
cd seafile-server/
Jalankan file 'setup-seafile-mysql.sh' untuk mengkonfigurasi database.
./setup-seafile-mysql.sh
Tekan Enter dan Anda akan dimintai informasi di bawah ini:
- nama server - Saya akan menggunakan nama host server 'natsume '
- ip atau domain server - alamat ip server, dalam kasus saya '192.168.1.115 '
- direktori data default - cukup tekan Enter
- port default - tekan Enter
- Sekarang untuk konfigurasi database, pilih angka 2
Untuk konfigurasi MySQL:
- gunakan host default - localhost
- porta bawaan - 3306
- pengguna mysql - 'seacloud '
- dan sandinya adalah 'sandi Anda '
- basis data ccnet adalah 'ccnet_db '
- basis data seafile adalah 'seafile_db '
- basis data seahub adalah 'seahub_db '
Tekan enter dan skrip akan membuat tabel database untuk file laut.
Sekarang kita dapat memulai layanan seafile dan seahub.
./seafile.sh start
./seahub.sh start
Ketika file seahub.sh dijalankan, kita akan ditanya konfigurasi admin.
Ketik email admin dan password, maka layanan seahub akan berjalan.
Seafile diinstal dan berjalan sekarang, kita dapat mengakses Seafile dari browser web dengan IP server pada port 8000 (dalam kasus saya - 192.168.1.115:8000), tetapi kami tidak akan melakukannya sekarang karena kami akan menggunakan proxy terbalik untuk server seafile dan kami akan menjalankan seafile dengan file layanan systemd.
Jadi kami harus menghentikan layanan seafile dan seahub untuk saat ini.
./seafile.sh stop
./seahub.sh stop
Langkah 5 - Konfigurasikan Layanan Seafile dan Seahub
Kita akan menjalankan seafile sebagai pengguna nginx, jadi kita perlu mengubah pemilik direktori instalasi seafile dan direktori seahub_cache menjadi pengguna nginx:
cd /var/www/
chown -R nginx:nginx *
chown -R nginx:nginx /tmp/seahub_cache
Selanjutnya, buka direktori systemd dan buat file seafile.service dengan vim:
cd /etc/systemd/system/
vim seafile.service
Tempel konfigurasi layanan seafile di bawah ini:
[Unit]
Description=Seafile Server
Before=seahub.service
After=network.target mariadb.service
[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seafile.sh start
ExecStop=/var/www/seafile/seafile-server/seafile.sh stop
RemainAfterExit=yes
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
Simpan dan keluar.
Sekarang buat file seahub.service baru.
vim seahub.service
Dan rekatkan konfigurasi di bawah ini.
[Unit]
Description=Seafile Hub
After=network.target seafile.target mariadb.service
[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seahub.sh start-fastcgi
ExecStop=/var/www/seafile/seafile-server/seahub.sh stop
RemainAfterExit=yes
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
Simpan dan keluar.
Muat ulang layanan systemd dan mulai seafile dan seahub dengan systemctl.
systemctl daemon-reload
systemctl start seafile
systemctl start seahub
Pastikan tidak ada error dan periksa apakah layanan seafile dan seahub berjalan di port 8082 dan 8000.
netstat -plntu
Langkah 6 - Buat File Sertifikat SSL
Untuk tutorial ini, kita akan menjalankan seafile melalui proxy Nginx, dan Nginx akan menyediakan koneksi aman (HTTPS) untuk keamanan data. Kita bisa menggunakan file sertifikat SSL gratis atau sertifikat SSL berbayar, ini tidak masalah untuk konfigurasinya. Pada langkah ini, saya akan membuat file sertifikat SSL yang ditandatangani sendiri dengan OpenSSL di direktori '/etc/nginx/ssl'.
Buat direktori ssl.
mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl
Hasilkan file sertifikat yang ditandatangani sendiri dan file dhparam dengan perintah di bawah ini:
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
openssl req -new -x509 -sha256 -days 365 -newkey rsa:2048 -nodes -keyout server.key -out server.crt
Jawab detail sertifikat seperti yang diminta oleh OpenSSL seperti nama, negara bagian, email, nama domain, dll. Kemudian ubah izin direktori dan file sertifikat.
chmod -R 700 /etc/nginx/ssl
chmod 400 server.*
chmod 400 dhparam.pem
File sertifikat SSL telah dibuat.
Langkah 7 - Konfigurasi Nginx sebagai Proxy Terbalik
Pada langkah ini, kita akan mengonfigurasi Nginx sebagai proxy terbalik untuk seafile-server pada port 8000 dan 8002.
Buka direktori konfigurasi nginx dan buat file host virtual baru untuk seafile.
cd /etc/nginx/
vim conf.d/seafile.conf
Tempel konfigurasi host virtual di bawah ini:
server {
listen 80;
server_name cloud.natsume.co;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name cloud.natsume.co;
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_prefer_server_ciphers on;
location / {
fastcgi_pass 127.0.0.1:8000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REMOTE_ADDR $remote_addr;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
fastcgi_read_timeout 36000;
}
# Reverse Proxy for seahub
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
}
#CHANGE THIS PATH WITH YOUR OWN DIRECTORY
location /media {
root /var/www/seafile/seafile-server/seahub;
}
}
Simpan dan keluar.
Saya akan menggunakan 'cloud.natsume.co' sebagai nama domain. Silakan ganti dengan nama domain Anda sendiri pada konfigurasi di atas.
Sekarang uji konfigurasi Nginx dan pastikan tidak ada kesalahan.
nginx -t
Mulai Nginx dengan perintah systemctl:
systemctl start nginx
Pastikan port 80 dan 443 tersedia dalam daftar yang disediakan netstat:
netstat -plntu
Selanjutnya, kita harus menambahkan nama domain ke konfigurasi seafile. Buka direktori seafile dan edit file konfigurasi.
cd /var/www/seafile/
vim conf/ccnet.conf
Ubah URL layanan menjadi nama domain Anda.
SERVICE_URL = https://cloud.natsume.co
Simpan dan keluar.
Edit file konfigurasi seahub.
vim conf/seahub_settings.py
Pada baris kedua, tambahkan konfigurasi di bawah ini:
HTTP_SERVER_ROOT = 'https://cloud.natsume.co/seafhttp'
Ganti nama domain dengan domain Anda di sini lagi. Simpan dan keluar.
Mulai ulang seafile dan tambahkan semua layanan untuk memulai saat boot:
systemctl restart seafile
systemctl restart seahub
systemctl enable nginx
systemctl enable mariadb
systemctl enable seafile
systemctl enable seahub
Langkah 8 - Konfigurasi FirewallD
Pada langkah 7, kami telah mengonfigurasi Nginx untuk menggunakan port HTTP dan HTTPS. Sekarang kita harus membuka port tersebut di Firewall dengan menambahkannya ke firewalld.
Mulai firewalld.
systemctl start firewalld
systemctl enable firewalld
Tambahkan port HTTP dan HTTPS ke konfigurasi firewall dengan perintah firewall-cmd di bawah ini:
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
Muat ulang konfigurasi firewall dan periksa daftar port.
firewall-cmd --reload
firewall-cmd --list-all
Langkah 9 - Menguji Seafile
Buka browser Anda, ketik nama domain seafile, dalam kasus saya cloud.natsume.co dan Anda akan diarahkan ke koneksi https.
Ketik email dan kata sandi admin Anda, lalu klik 'Masuk'.
Dasbor admin Seafile:
Tampilan file file laut.
Seafile dengan Nginx sebagai Reverse Proxy dan SSL telah berhasil diinstal pada server CentOS 7.
Kesimpulan
Dengan beragamnya aplikasi cloud saat ini, Seafile adalah solusi cloud pribadi yang baik untuk digunakan saat ini. Dengan fitur enkripsi di tingkat perpustakaan/folder, Anda dapat menyimpan data Anda dengan aman di server Seacloud. Selain itu, Seafile mudah dikonfigurasi dan diterapkan di server Anda sendiri.