Selamat datang kembali, kami akan melanjutkan perjalanan kami dalam membangun home server hemat listrik menggunakan Asrock Deskmini X300. Pada video ini kami akan fokus pada proses instalasi Ubuntu 22.04, konfigurasi ZFS untuk mirroring HDD, serta instalasi Samba, Nextcloud, dan Jellyfin.
1. Mempersiapkan Hard Disk
a. Pengaturan Mirroring Hard Disk menggunakan ZFS
Sebelum kita melakukan apapun, sebaiknya kita setup dulu konfigurasi mirroring Hard Disk (RAID 1) menggunakan ZFS.
- Install zfs tools
$ sudo apt install zfsutils-linux
- Pastikan zfs tools ter install
$ whereis zfs
- Lihat Hard Disk terpasang
$ sudo fdisk -l
Outputnya seperti ini, catat nama drive nya
- Buat Pool
- Stripped pool (RAID-0), Ukuran yang terbentuk adalah penjumlahan dari ukuran hdd 1 + ukuran hdd 2. Kerusakan pada satu hard disk dapat mengakibatkan data hilang atau corrupt.
- Perintahnya:
$ sudo zpool create new-pool /dev/sdb /dev/sdc
- Perintahnya:
- Mirrored pool (RAID-1), Ukuran yang terbentuk akan sama dengan 1 hdd. Data akan otomatis di copy ke harddisk satunya. Ketika terjadi kerusakan pada satu hard disk, data akan masih tersedia di hard disk satunya. Perlu ukuran hard disk yang persis sama.
- Perintahnya:
$ sudo zpool create new-pool mirror /dev/sdb /dev/sdc
- Perintahnya:
- Saya akan menggunakan Mirrored pool. Harddisk saya terbaca sebagai /dev/sda dan /dev/sdb dan drive baru nya akan di mount ke /data
- Perintahnya:
$ sudo zpool create data mirror /dev/sda /dev/sdb
- Perintahnya:
- Stripped pool (RAID-0), Ukuran yang terbentuk adalah penjumlahan dari ukuran hdd 1 + ukuran hdd 2. Kerusakan pada satu hard disk dapat mengakibatkan data hilang atau corrupt.
b. Atur hak Akses ke drive yang baru
Drive baru sudah tersedia di /data. Tapi hak aksesnya masih root only. Untuk bisa digunakan oleh semua users,
jalankan perintah: $ sudo chmod -R a+rw /data
c. Persiapkan beberapa folder
$ mkdir /data/docker
$ mkdir /data/nextcloud
2. Setup Samba Share
Samba share digunakan untuk mensharing folder ke windows, menggunakan protokol SMB. Sehingga folder yang di share bisa diakses menggunakan windows explorer bahkan bisa di map network drive dari Windows.
- Install samba
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install samba samba-common
- Open firewall
$ sudo ufw allow samba
- Back up default config
$ sudo cp -pf /etc/samba/smb.conf /etc/samba/smb.conf.bak
- Create samba password
$ smbpasswd -a shandy
- Create shared folders
$ mkdir /data/Movies
$ mkdir /data/shandy
- Change permissions
$ sudo chmod -R 777 /data/Movies
$ sudo chmod -R 777 /data/shandy
- Open samba config
$ sudo gedit /etc/samba/smb.conf
Pastikan workgroup nya sama dengan workgroup Windows
workgroup = WORKGROUP
Tambahkan 2 konfigurasi sharing ini di bagian bawah
[Movies]
path = /data/Movies
valid users = shandy
browsable = yes
writable = yes
read only = no
[shandy]
path = /data/shandy
valid users = shandy
browsable = yes
writable = yes
read only = no
Jangan lupa restart service samba
$sudo service smbd restart
3. Setup Docker
Apa itu Docker? Bisa dilihat di https://youtu.be/1S2C9eVqhb4
- Initial Setup
$ sudo apt update
$ sudo apt upgrade
- Install aplikasi-aplikasi yang diperlukan
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
- Tambahkan GPG key of Docker repository
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- Tambahkan Docker repository ke Ubuntu to the apt sources
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- Install Docker
$ sudo apt update | sudo apt-cache policy docker-ce
$ sudo apt install docker-ce
- Check docker status
$ sudo systemctl status docker
- Configure sudo permission for docker, jadi kita tidak perlu menggunakan perintah sudo ketika menjalankan perintah docker
$ sudo usermod -aG docker username
LOG OFF / RESTART
4. Setup Portainer
Portainer menyediakan antarmuka pengguna berbasis web yang intuitif untuk mengelola kontainer Docker, jaringan, volume, dan banyak komponen lainnya yang terkait dengan lingkungan Docker. Dengan menggunakan Portainer, pengguna dapat dengan mudah membuat, menjalankan, dan menghentikan kontainer, memantau kinerja kontainer, mengelola jaringan dan volume, serta mengatur pengaturan dan konfigurasi Docker.
Cukup jalankan perintah berikut:
$ docker volume create portainer_data
$ docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
Buka browser ke halaman http://localhost:9443
dan lanjutkan setup nya
5. Setup NextCloud - OnlyOffice
Nextcloud menyediakan berbagai fitur untuk berbagi, sinkronisasi, dan mengakses data dari berbagai perangkat, termasuk komputer, ponsel, dan tablet. Ini adalah alternatif yang dapat di-hosting sendiri untuk layanan penyimpanan cloud populer seperti Google Drive, Dropbox, atau Microsoft OneDrive.
ONLYOFFICE adalah sebuah suite produktivitas yang menyediakan berbagai aplikasi berbasis web untuk mengedit dokumen, spreadsheet, dan presentasi. ONLYOFFICE memungkinkan kolaborasi real-time, sinkronisasi data, dan pengelolaan dokumen yang efisien. Suite ini dapat diinstal secara lokal di server Anda sendiri atau dihosting oleh penyedia layanan cloud.
Integrasi antara Nextcloud dan ONLYOFFICE memungkinkan pengguna Nextcloud untuk mengedit dokumen, spreadsheet, dan presentasi menggunakan fitur lengkap ONLYOFFICE Docs yang disematkan dalam antarmuka Nextcloud. Dengan integrasi ini, pengguna dapat membuka dan mengedit file langsung di dalam Nextcloud menggunakan aplikasi ONLYOFFICE Docs, tanpa perlu mengunduh atau mengunggah file.
-
Installasi NextCloud - OnlyOffice
1. Masuk ke folder docker
$ cd /data/docker
2. Dapatkan versi terakhirnya dengan perintah:
$ git clone https://github.com/ONLYOFFICE/docker-onlyoffice-nextcloud
$ cd docker-onlyoffice-nextcloud
3. Map /data/nextcloud to nextcloud
Buka file docker-compose.yml menggunakan text editor (gedit) dan tambahkan 1 baris, sehingga secara keseluruhan akan terlihat seperti di bawah ini:
version: '3'
services:
app:
container_name: app-server
image: nextcloud:fpm
restart: always
expose:
- '80'
- '9000'
volumes:
- app_data:/var/www/html
- /data/nextcloud:/var/www/html/data
onlyoffice-document-server:
container_name: onlyoffice-document-server
image: onlyoffice/documentserver:latest
restart: always
expose:
- '80'
- '443'
volumes:
- document_data:/var/www/onlyoffice/Data
- document_log:/var/log/onlyoffice
nginx:
container_name: nginx-server
image: nginx
restart: always
ports:
- 80:80
- 443:443
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- app_data:/var/www/html
volumes:
document_data:
document_log:
app_data:
mysql_data:
4. Lalu jalankan perintah
$ docker-compose up -d
Perintah di atas akan membentuk network baru di docker dengan nama
docker-onlyoffice-nextcloud_default
JANGAN LANJUTKAN SETUP NEXTCLOUD VIA BROWSER DULU!
-
Instalasi Database MariaDB
Secara default NextCloud menggunakan sqlite sebagai databasenya, sayangnya, sqlite tidak multi-user, sehingga akan mengganggu performa dari NextCloud jika digunakan pada jangka waktu yang lama.
Sekarang kita akan install MariaDB sebagai pengganti sqlite.
Parameter yang akan kita gunakan adalah:
- Docker name: mariadb-nextcloud
- Database location: /data/docker/mariadb-nextcloud
- Join to existing network: docker-onlyoffice-nextcloud_default
- Tidak perlu map port, karena hanya akan digunakan oleh NextCloud
1. Prepare the persistent mariadb data folder
$ mkdir /data/docker/mariadb-nextcloud
2. Jalankan perintah berikut
$ docker run -d --name mariadb-nextcloud -v /data/docker/mariadb-nextcloud:/var/lib/mysql -e "MYSQL_ROOT_PASSWORD=kamisama" mariadb
3. Buka kontainernya di portainer dan gabungkan dengan network docker-onlyoffice-nextcloud_default
-
Instalasi NextCloud
PERINGATAN! Secara Default NextCloud akan menggunakan sqlite! Kamu akan mengalami masalah performance!
Kita akan menggunakan MariaDB sebagai databasenya, jadi jangan masukkan username dan password dulu!
1. Buka browser dan arahkan ke http://localhost
2. Click Storage & Database dan pilih MySQL/MariaDB
3. Masukan DB User dan Password seperti di bawah
Database user: root
Database password: kamisama (Kita sudah password ini ketika membuat kontainer mariadb di atas)
Database Name: NextCloud (Database Name harusnya belum ada)
Server: mariadb-nextcloud (Karena kontainer 'app-server' dan 'mariadb-nextcloud' ada di network yang sama, 'app-server' bisa langsung connect menggunakan nama kontainer)
4. Masukan username & password
5. Click Finish Setup
6. Login, go to Documents dan coba edit office files (docx, xlsx, pptx, etc), NextCloud akan mendownload file tersebut, bukan meng-edit nya, inilah kenapa kita perlu onlyoffice
-
Make NextCloud - OnlyOffice works
1. Masuk ke folder docker-onlyoffice lagi
$ cd /data/docker/docker-onlyoffice-nextcloud
2. Jalankan file set_configuration.sh
$ bash set_configuration.sh
3. Kembali ke browser dan refresh halamannya, sekarang NextCloud akan menggunakan OnlyOffice untuk mengedit file-file office.
-
Increase memory limit, max upload, max post and remove untrusted domain warning in NextCloud
1. Buka portainer di browser (http://localhost:9443)
2. Dari menu, pilih Containers
3. Pilih kontainer dengan nama ‘app-container’ dan pilih Console
4. Update the repository and install nano
$ apt update
$ apt install nano
5. Increase Memory, upload. Post max limits
Kita perlu edit php.ini, tapi kita juga bisa edit nextcloud.ini
$ nano /usr/local/etc/php/conf.d/nextcloud.ini
6. Ubah 3 value di dalam file
memory_limit= 5120M
upload_max_filesize=5120M
post_max_size=5120M
7. Ctrl+s to save and Ctr+x to quit
-
Remove untrusted domain warning in NextCloud
1. Open NextCloud config file lagi
$ nano /var/www/html/config/config.php
2. Cari bagian 'trusted_domains' dan tambahkan 1 baris sehingga terlihat seperti di bawah ini
'trusted_domains' =>
array (
0 => 'localhost',
1 => '*.*.*.*',
),
3. Ctrl+s to save and Ctr+x to quit
6. Setup Jellyfin
Jellyfin adalah aplikasi perangkat lunak yang berfungsi sebagai pusat media (media center) pribadi. Dengan menggunakan Jellyfin, pengguna dapat mengatur koleksi media mereka, seperti film, acara TV, musik, foto, dan lainnya, dan mengaksesnya dari berbagai perangkat seperti komputer, smartphone, tablet, atau Smart TV. Jellyfin menyediakan antarmuka pengguna berbasis web yang intuitif untuk menjelajahi dan memutar konten media.
1. Persiapkan folder-foldernya
$ mkdir /data/docker/jellyfin
$ mkdir /data/docker/jellyfin/cache
$ mkdir /data/docker/jellyfin/config
Untuk media, saya akan gunakan folder sharing samba yang berlokasi di /data/Movies, jadi saya bisa upload via Windows melalui shared folder / map network drive, dan Jellyfin akan otomatis mengupdate library nya.
2. Buka portainer di browser (http://localhost:9443)
3. Di menu Containers, click Add Container
4. Di bagian Docker image, isikan nama: Jellyfin
5. Network ports configurations, map port-port berikut: 1900, 7359, dan 8096.
6. Volumes
7. Restart Policy
8. Click Deploy Container button
9. Buka browser and buka url http://localhost:8096
10. Selesaikan instalasi, dan folder yang digunakan disini adalah /media