One place for hosting & domains

      Server

      Cara Menginstal Python 3 dan Menyiapkan Lingkungan Pemrograman pada Server Ubuntu 20.04


      Pengantar

      Bahasa pemrograman Python adalah pilihan yang semakin populer baik bagi para pemula dan pengembang berpengalaman. Fleksibel dan serbaguna, Python memiliki kekuatan dalam pembuatan skrip, automasi, analisis data, pemelajaran mesin, dan pengembangan back-end. Pertama diterbitkan pada tahun 1991 dengan nama yang terinspirasi oleh grup lawak Inggris Monty Python, tim pengembangan ingin membuat Python sebagai suatu bahasa yang menyenangkan untuk digunakan.

      Tutorial ini akan menyiapkan server Ubuntu 20.04 Anda bersama dengan lingkungan pemrograman Python 3. Pemrograman pada suatu server memiliki banyak keuntungan dan mendukung kolaborasi dengan berbagai proyek pengembangan. Prinsip umum tutorial ini akan berlaku pada distribusi Linux Debian versi manapun.

      Prasyarat

      Untuk menyelesaikan tutorial ini, Anda harus memiliki pengguna non-root dengan privilese sudo pada server Ubuntu 20.04. Untuk mempelajari cara melaksanakan penyiapan ini, ikuti panduan penyiapan server awal kami.

      Jika Anda belum terbiasa dengan lingkungan terminal, Anda dapat menemukan artikel berjudul “An Introduction to the Linux Terminal” yang bermanfaat untuk lebih membiasakan diri Anda dengan terminal.

      Dengan server dan pengguna Anda yang sudah disiapkan, Anda siap untuk memulai.

      Langkah 1 — Menyiapkan Python 3

      Ubuntu 20.04 dan versi lain dari Debian Linux dilengkapi dengan Python 3 yang sudah terinstal. Untuk memastikan bahwa versi kita adalah yang terbaru, mari kita perbarui dan tingkatkan sistem dengan perintah apt untuk bekerja dengan Advanced Packaging Tool (Alat Pengemasan Tingkat Lanjut) dari Ubuntu:

      • sudo apt update
      • sudo apt -y upgrade

      Bendera -y akan mengonfirmasi bahwa kita menyetujui semua butir yang akan diinstal, tetapi tergantung pada versi Linux Anda, Anda perlu mengonfirmasi pertanyaan tambahan saat sistem Anda diperbarui dan ditingkatkan.

      Setelah proses ini selesai, kita bisa memeriksa versi Python 3 yang terinstal di dalam sistem dengan mengetik:

      Anda akan menerima keluaran di jendela terminal yang akan memberi tahu nomor versi kepada Anda. Walaupun nomor ini dapat bervariasi, keluaran akan serupa seperti ini:

      Output

      Python 3.8.2

      Untuk mengelola paket perangkat lunak untuk Python, mari kita instal pip, alat yang akan menginstal dan mengelola paket pemrograman yang mungkin kita ingin gunakan dalam proyek pengembangan kita. Anda dapat mempelajari lebih lanjut tentang modul atau paket yang dapat Anda instal dengan pip dengan membaca “How To Import Modules in Python 3”.

      • sudo apt install -y python3-pip

      Paket Python dapat diinstal dengan mengetik:

      • pip3 install package_name

      Di sini, package_name dapat merujuk ke paket atau pustaka Python apa pun, seperti Django untuk pengembangan web atau NumPy untuk komputasi ilmiah. Jadi, jika Anda ingin menginstal NumPy, Anda dapat melakukannya dengan perintah pip3 instal numpy.

      Ada beberapa paket dan alat pengembangan lain yang akan diinstal untuk memastikan bahwa kita memiliki konfigurasi yang kokoh untuk lingkungan pemrograman kita:

      • sudo apt install -y build-essential libssl-dev libffi-dev python3-dev

      Setelah Python disiapkan, dan pip serta alat-alat lain sudah terinstal, kita dapat menyiapkan suatu lingkungan virtual untuk proyek pengembangan kita.

      Langkah 2 — Menyiapkan Lingkungan Virtual

      Lingkungan virtual memungkinkan Anda untuk memiliki ruang terisolasi pada server Anda untuk proyek Python, yang memastikan bahwa setiap proyek Anda dapat memiliki set dependensi sendiri yang tidak akan mengganggu proyek Anda yang lain.

      Mengatur suatu lingkungan pemrograman menyediakan kontrol yang lebih besar atas proyek Python dan tentang bagaimana versi paket yang berbeda ditangani. Ini sangat penting saat bekerja dengan paket pihak ketiga.

      Anda dapat menyiapkan sebanyak mungkin lingkungan pemrograman Python sesuai keinginan Anda. Setiap lingkungan pada dasarnya adalah suatu direktori atau folder pada server Anda yang memiliki beberapa skrip di dalamnya untuk membuatnya bertindak sebagai suatu lingkungan.

      Walaupun ada beberapa cara untuk menciptakan suatu lingkungan pemrograman di dalam Python, kita akan menggunakan modul venv di sini, yang merupakan bagian dari pustaka Python 3 standar. Mari kita instal venv dengan mengetik:

      • sudo apt install -y python3-venv

      Dengan venv sudah terinstal, kita siap untuk menciptakan lingkungan. Mari kita pilih di direktori mana kita ingin menaruh lingkungan pemrograman Python kita, atau menciptakan direktori baru dengan mkdir, seperti:

      • mkdir environments
      • cd environments

      Setelah Anda berada di direktori di mana Anda ingin lingkungan itu berada, Anda dapat menciptakan suatu lingkungan dengan menjalankan perintah berikut:

      Pada dasarnya, pyvenv menyiapkan suatu direktori baru yang berisi beberapa butir di dalamnya yang dapat kita lihat dengan perintah ls:

      Output

      bin include lib lib64 pyvenv.cfg share

      Secara bersama, berkas-berkas ini bekerja untuk memastikan proyek Anda terisolasi dari konteks server yang lebih luas, sehingga berkas sistem dan proyek tidak bercampur. Ini adalah praktik yang baik untuk kontrol versi dan untuk memastikan bahwa setiap proyek Anda memiliki akses ke paket tertentu yang dibutuhkannya. Python Wheels, format paket bawaan untuk Python yang dapat mempercepat produksi perangkat lunak Anda dengan cara mengurangi frekuensi yang dibutuhkan untuk mengompilasi, akan berada di dalam direktori share Ubuntu 20.04.

      Untuk menggunakan lingkungan ini, Anda perlu mengaktifkannya, yang Anda dapat laksanakan dengan mengetik perintah berikut yang memanggil skrip aktivasi:

      • source my_env/bin/activate

      Prompt perintah Anda sekarang akan diawali dengan nama lingkungan Anda, dalam hal ini disebut my_env. Tergantung pada versi Debian Linux yang Anda jalankan, prefiks Anda mungkin tampak agak berbeda, tetapi nama lingkungan Anda di dalam kurung harus menjadi hal pertama yang Anda lihat di baris Anda:

      Prefiks ini memungkinkan kita mengetahui bahwa lingkungan my_env saat ini sedang aktif, artinya bahwa saat kita menciptakan program di sini, program itu hanya akan menggunakan pengaturan dan paket dari lingkungan khusus ini.

      Catatan: Di dalam lingkungan virtual, Anda dapat menggunakan perintah python alih-alih python3, dan pip alih-alih pip3 jika Anda lebih menyukainya. Jika Anda menggunakan Python 3 pada mesin Anda di luar suatu lingkungan, Anda perlu menggunakan perintah python3 dan pip3 secara eksklusif.

      Setelah mengikuti langkah-langkah ini, lingkungan virtual Anda siap digunakan.

      Langkah 3 — Menciptakan Program “Hello, World”

      Sekarang, setelah kita menata lingkungan virtual kita, mari kita ciptakan sebuah program “Halo, World!“ tradisional. Ini akan memungkinkan kita menguji lingkungan kita dan memberi kita kesempatan untuk menjadi lebih familiar dengan Python jika sebelumnya kita belum akrab.

      Untuk melakukan ini, kita akan membuka suatu editor teks baris-perintah seperti nano dan menciptakan berkas baru:

      Setelah berkas teks dibuka di dalam jendela terminal, kita akan mengetikkan program kita:

      print("Hello, World!")
      

      Keluarlah dari nano dengan menekan tombol CTRL dan X, dan saat diminta menyimpan berkas, tekan y.

      Setelah keluar dari nano dan kembali ke shell Anda, mari kita jalankan program:

      Program hello.py yang baru Anda buat dapat menyebabkan terminal Anda menghasilkan keluaran berikut:

      Output

      Hello, World!

      Untuk keluar dari lingkungan, ketik perintah deactivate dan Anda akan kembali ke direktori asli Anda.

      Kesimpulan

      Selamat! Di titik ini Anda memiliki suatu lingkungan pemrograman Python 3 yang disiapkan pada server Linux Ubuntu Anda dan Anda dapat memulai proyek pengodean!

      Jika Anda menggunakan mesin lokal dan bukannya server, lihat tutorial yang relevan untuk sistem operasi Anda di seri “How To Install and Set Up a Local Programming Environment for Python 3” kami.

      Dengan server Anda telah siap untuk pengembangan perangkat lunak, Anda dapat terus belajar lebih banyak tentang pengodean di Python dengan membaca buku-el How To Code in Python 3 gratis kami, atau membuka tutorial Python kami.



      Source link

      Penyiapan Server Awal dengan Ubuntu 20.04


      Pengantar

      Ketika Anda menciptakan server Ubuntu 20.04 yang baru untuk pertama kali, Anda harus melakukan beberapa langkah konfigurasi penting sebagai bagian dari persiapan dasar. Langkah-langkah ini akan meningkatkan keamanan dan penggunaan server Anda, serta memberikan Anda suatu fondasi yang kuat untuk berbagai tindakan berikutnya.

      Langkah 1 — Log masuk sebagai root

      Untuk log masuk ke server Anda, Anda perlu mengetahui alamat IP publik server Anda. Anda juga membutuhkan kata sandi atau — jika Anda menginstal kunci SSH untuk autentikasi — kunci privat untuk akun pengguna root. Jika Anda belum log masuk ke server, Anda mungkin ingin mengikuti panduan kami tentang cara terhubung ke Droplet dengan SSH, yang membahas proses ini secara mendetail.

      Jika Anda belum terhubung ke server Anda, log masuk sekarang sebagai pengguna root dengan menggunakan perintah berikut (ganti bagian perintah yang disorot dengan alamat IP publik server Anda):

      Terima peringatan tentang autentikasi hos jika peringatan itu muncul. Jika Anda menggunakan autentikasi kata sandi, berikan kata sandi root Anda untuk log masuk. Jika Anda menggunakan kunci SSH yang dilindungi frasa sandi, Anda mungkin diminta memasukkan frasa sandi saat kali pertama Anda menggunakan kunci pada setiap sesi. Jika ini bukan kali pertama Anda log masuk ke server dengan kata sandi, Anda juga dapat diminta mengubah kata sandi root.

      Tentang root

      Pengguna root adalah pengguna administratif dalam suatu lingkungan Linux yang memiliki privilese sangat luas. Karena privilese akun root telah ditingkatkan, Anda tidak disarankan untuk menggunakannya secara teratur. Hal ini dikarenakan salah satu kekuatan yang melekat pada akun root adalah kemampuan membuat perubahan yang sangat dekstruktif, sekalipun dilakukan secara tidak sengaja.

      Langkah berikutnya adalah membuat akun pengguna baru dengan privilese yang lebih sedikit untuk penggunaan sehari-hari. Nantinya, kami akan mengajarkan cara mendapatkan privilese yang ditingkatkan hanya sewaktu Anda membutuhkannya.

      Langkah 2 — Menciptakan Pengguna Baru

      Setelah log masuk sebagai root, kita siap untuk menambah akun pengguna baru. Nantinya, kita akan log masuk dengan akun baru ini alih-alih root.

      Ini adalah contoh penciptaan pengguna baru yang bernama sammy, tetapi Anda harus menggantinya dengan nama pengguna yang Anda suka:

      Anda akan diminta menjawab beberapa pertanyaan, mulai dari kata sandi akun.

      Masukkan kata sandi yang kuat dan, secara opsional, isi informasi tambahan jika Anda mau. Ini tidak wajib diisi dan Anda dapat langsung menekan ENTER pada bidang apa pun yang ingin dilewati.

      Langkah 3 — Memberikan Privilese Administratif

      Sekarang, kita punya akun pengguna baru dengan privilese akun reguler. Namun, kadang kala kita perlu melakukan tugas-tugas administratif.

      Agar tidak perlu log keluar dari pengguna biasa dan log masuk kembali sebagai akun root, kita dapat membuat sesuatu yang disebut sebagai superpengguna atau privilese root untuk akun biasa kita. Ini akan membuat pengguna biasa kita menjalankan berbagai perintah yang mengandung privilese administratif dengan memasukkan kata sudo sebelum setiap perintah.

      Untuk menambahkan privilese ini kepada pengguna baru, kita perlu menambahkan pengguna ke grup sudo. Secara asali, pada Ubuntu 20.04, pengguna yang menjadi anggota grup sudo diperkenankan untuk menggunakan perintah sudo.

      Sebagai root, jalankan perintah ini untuk menambahkan pengguna baru ke grup sudo (ganti nama pengguna yang disorot dengan pengguna baru Anda):

      Sekarang, saat log masuk sebagai pengguna reguler, Anda dapat mengetik sudo sebelum perintah untuk melakukan tindakan dengan privilese superpengguna.

      Langkah 4 — Mengatur Firewall Dasar

      Server Ubuntu 20.04 dapat menggunakan firewall UFW untuk memastikan hanya koneksi ke layanan tertentu yang diizinkan. Kita dapat mengatur firewall dasar secara sangat mudah menggunakan aplikasi ini.

      Catatan: Jika server Anda beroperasi di DigitalOcean, Anda dapat menggunakan DigitalOcean Cloud Firewalls alih-alih firewall UFW. Kami menyarankan menggunakan satu firewall saja untuk menghindari pertentangan aturan yang mungkin sulit diawakutu.

      Aplikasi dapat mendaftarkan profilnya di UFW saat instalasi. Profil-profil ini memungkinkan UFW untuk mengelola aplikasi berdasarkan nama. OpenSSH, suatu layanan yang memungkinkan kita terhubung ke server kita sekarang, memiliki profil yang terdaftar dengan UFW.

      Anda dapat melihatnya dengan mengetik:

      Output

      Available applications: OpenSSH

      Kita harus memastikan firewall mengizinkan koneksi SSH sehingga kita dapat log masuk lagi di kesempatan selanjutnya. Kita dapat mengizinkan koneksi ini dengan mengetik:

      Setelah itu, kita dapat mengaktifkan firewall dengan mengetik:

      Ketik y dan tekan ENTER untuk melanjutkan. Anda dapat melihat bahwa koneksi SSH masih diizinkan dengan mengetik:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

      Jika Anda menginstal dan mengonfigurasi layanan tambahan, Anda akan perlu menyesuaikan pengaturan firewall untuk mengizinkan lalu lintas masuk, karena firewall masih memblokir semua koneksi kecuali untuk SSH. Anda dapat mempelajari beberapa operasi UFW yang umum dalam panduan UFW Essentials kami.

      Langkah 5 — Mengaktifkan Akses Eksternal untuk Pengguna Reguler Anda

      Karena kita telah memiliki pengguna reguler untuk penggunaan sehari-hari, kita perlu memastikan bahwa kita dapat melakukan SSH secara langsung ke akun tersebut.

      Catatan: Sampai Anda sudah memastikan bahwa Anda bisa log masuk dan menggunakan sudo dengan pengguna baru Anda, kami menyarankan untuk tetap log masuk sebagai root. Dengan begitu, jika ada masalah, Anda dapat memecahkan masalah dan membuat perubahan yang diperlukan sebagai root. Jika Anda menggunakan DigitalOcean Droplet dan mengalami masalah dengan koneksi SSH root, Anda dapat log masuk ke Droplet menggunakan DigitalOcean Console.

      Proses untuk mengonfigurasi akses SSH bagi pengguna baru Anda tergantung apakah akun root server Anda menggunakan kata sandi atau kunci SSH untuk autentikasi.

      Jika Akun Root Menggunakan Autentikasi Kata Sandi

      Jika Anda log masuk ke akun root menggunakan kata sandi, maka autentikasi kata sandi akan diaktifkan untuk SSH. Anda dapat melakukan SSH ke akun pengguna baru Anda dengan membuka sesi terminal baru dan menggunakan SSH dengan nama pengguna baru Anda:

      Setelah memasukkan kata sandi pengguna reguler Anda, Anda akan log masuk. Ingat, jika Anda perlu menjalankan perintah dengan privilese administratif, ketik sudo sebelumnya seperti ini:

      Anda akan diminta memasukkan kata sandi pengguna reguler Anda saat menggunakan sudo untuk pertama kalinya pada setiap sesi (dan selanjutya secara berkala).

      Untuk meningkatkan keamanan server Anda, kami sangat menyarankan untuk mengaktifkan kunci SSH alih-alih menggunakan autentikasi kata sandi. Ikuti panduan kami tentang mengaktifkan kunci SSH pada Ubuntu 20.04 untuk mempelajari cara mengonfigurasi autentikasi berbasis kunci.

      Jika Akun Root Menggunakan Autentikasi Kunci SSH

      Jika Anda log masuk ke akun root Anda menggunakan kunci SSH, maka autentikasi kata sandi dinonaktifkan untuk SSH. Anda akan perlu menambahkan salinan dari kunci publik lokal pada berkas ~/.ssh/authorized_keys pengguna baru agar bisa log masuk dengan sukses.

      Karena kunci publik Anda sudah berada di dalam berkas ~/.ssh/authorized_keys akun root pada server, kita dapat menyalin berkas itu dan struktur direktorinya ke akun pengguna baru pada sesi yang ada.

      Cara termudah untuk menyalin berkas dengan kepemilikan dan izin yang benar yaitu dengan menggunakan perintah rsync. Ini akan menyalin direktori .ssh pengguna root, menyimpan izin, dan memodifikasi pemilik berkas, semua itu hanya dengan satu perintah. Pastikan untuk mengganti bagian perintah yang disorot di bawah ini agar sesuai dengan nama pengguna reguler Anda:

      Catatan: Perintah rsync memberikan perlakuan yang berbeda terhadap sumber dan tujuan yang diakhiri dengan tanda garis miring dibanding yang tidak diakhiri dengan tanda garis miring. Saat menggunakan rsync di bawah, pastikan direktori sumber (~/.ssh) tidak diakhiri dengan tanda garis miring (periksalah untuk memastikan Anda tidak menggunakan ~/.ssh/).

      Jika Anda secara tidak sengaja menambahkan tanda garis miring pada akhir perintah, rsync akan menyalin konten *dari direktori ~/.ssh akun *root** ke direktori rumah pengguna sudo alih-alih menyalin seluruh struktur direktori ~/.ssh. Berkas akan berada di lokasi yang salah serta SSH tidak akan dapat menemukan dan menggunakannya.

      • rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy

      Sekarang, buka sesi terminal baru pada mesin lokal Anda, dan gunakan SSH dengan nama pengguna baru Anda:

      Anda harus log masuk ke akun pengguna baru tanpa menggunakan kata sandi. Ingat, jika Anda perlu menjalankan perintah dengan privilese administratif, ketik sudo di depan perintah seperti ini:

      Anda akan diminta memasukkan kata sandi pengguna biasa saat menggunakan sudo untuk pertama kalinya pada setiap sesi (dan selanjutnya secara berkala).

      Setelah Ini, Apa Selanjutnya?

      Di titik ini, Anda memiliki fondasi yang kuat untuk server Anda. Anda dapat menginstal perangkat lunak apa pun yang dibutuhkan di server Anda sekarang.



      Source link

      How To Create a calibre Ebook Server on Ubuntu 20.04


      The author selected the COVID-19 Relief Fund to receive a donation as part of the Write for DOnations program.

      Introduction

      calibre is a free and open source ebook manager that’s well known for its cross-platform desktop application. You can use calibre to manage your ebook library on a single device, but the application also includes a powerful server component. Setting up an ebook server allows you to:

      • Access your books from anywhere in the world
      • Easily transfer your books to mobile devices
      • Share books with your friends and family

      The calibre Content server includes a backend for serving your books and a basic front end for searching through your library, downloading individual titles, or even reading your books directly through a web browser. The server also offers a basic mobile interface that works with a wide variety of devices, including the basic browsers that ship with many e-ink readers such as Kindle and Kobo.

      In this tutorial, you’ll set up and use the calibre Content server on Ubuntu 20.04. Specifically, you will download and install the calibre server, configure calibre as a service so that it starts automatically when your server reboots, and add books to your library using command line tools. You will also encounter options to set up a cron job to automatically add new books to your library from a specific directory, add authentication to your server so that only you can access it, and add a free SSL/TLS certificate to serve your library over HTTPS for extra security.

      Warning: As with all creative content, it is important to respect the copyright licenses associated with materials created by others. This tutorial uses public domain books legally downloaded from Project Gutenberg, which holds over 60,000 free ebooks.

      Prerequisites

      • A server running Ubuntu 20.04 with a sudo user and a firewall. You can follow our Initial Server Setup Guide for instructions.
      • Step 7 includes the option to secure your calibre Content server with an SSL certificate. If you wish to do so, you will require a domain name with an available A record. If you are using a DigitalOcean Droplet, you can follow our guide on [How To Point to DigitalOcean Nameservers From Common Domain Registrars](digitalocean.com/community/tutorials/how-to-point-to-digitalocean-nameservers-from-common-domain-registrars) for instructions.

      Step 1 — Downloading and Installing the calibre Content Server

      Although calibre exists in Ubuntu’s software repositories, the version there often lags behind the latest release. Therefore, the official calibre documentation recommends that you install it from a binary hosted on their site instead.

      First, install some necessary dependencies:

      • sudo apt update && sudo apt install -y libfontconfig libgl1-mesa-glx

      Now download and install the calibre server.

      • wget https://download.calibre-ebook.com/linux-installer.sh

      Inspect the contents of the script:

      You can scroll up and down with the k and j keys and hit q to get back to your terminal when you are done.

      Now execute the script to install calibre:

      • sudo sh linux-installer.sh

      calibre expects a desktop environment but it will not find one on a headless server, so you will see some warnings about desktop integration failing. It is safe to ignore these because we will control calibre entirely via its command line tools and web interface.

      Now that we have installed calibre, we can begin to explore its functionality.

      Step 2 — Creating a Library and Adding Your First Book

      To explore calibre’s functionality, let’s download an .epub or .mobi ebook. We’ll use A Christmas Carol by Charles Dickens from Project Gutenberg as an example. Project Gutenberg maintains a massive repository of free, public domain literature and is a great resource for ebooks.

      Run the following command to download this book to your server:

      • wget http://www.gutenberg.org/ebooks/46.kindle.noimages -O christmascarol.mobi

      Now create a directory that calibre can use as your ebook library:

      And add the book you just downloaded to your new library using the calibredb command:

      • calibredb add *.mobi --with-library calibre-library/

      You will see the following output:

      Output

      Added book ids: 1

      With a book added to your library, you can now start calibre and explore the application.

      Step 3 — Running the calibre Content Server and Viewing Your Library

      With calibre installed and a book downloaded, we are ready to explore the application’s user interface. But before we access the calibre Content server in a web browser, we need to make sure that our server can accept traffic on port 8080, which is the default port for calibre. If you followed the initial server setup guide in the prerequisites section, then you enabled ufw, or Uncomplicated Firewall. You now need to allow port 8080 through the firewall.

      Use the following command to open port 8080:

      Check the status of ufw to make sure the port is open:

      You will see an output like this:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 8080 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 8080 (v6) ALLOW Anywhere (v6)

      Now run the following command to start the calibre content server:

      • calibre-server calibre-library

      calibre-server is the command used to start our server and calibre-library is the name of the directory we created earlier and told calibre to use as our library.

      You will see an output like this:

      calibre server listening on 0.0.0.0:8080
      OPDS feeds advertised via BonJour at: your_server_ip port: 8080
      

      From your local machine, visit your_server_ip:8080 (substituting your server’s IP address) and you will see the default calibre screen. Click on calibre-library and you will see the book that you added in the previous step.

      calibre server menu

      Hit Ctrl+C to stop the manual server process that you started.

      This method of running the calibre Content server works well, but you probably want your library to work all of the time, even after you close the SSH connection to your server. To make sure it always runs, even after rebooting your server, let’s turn the calibre Content server into a service.

      Step 4 — Creating a Service for the calibre Content Server

      To improve the usability of the calibre Content server, let’s replace our manual server process with a service that will start on boot.

      First, create a file called calibre-server.service in the directory /etc/sytemd/system/:

      • sudo nano /etc/systemd/system/calibre-server.service

      Now add the following configurations, which will start the calibre Content server on boot. Make sure to replace the highlighted text with your user and group:

      calibre-server.service

      ## startup service
      [Unit]
      Description=calibre content server
      After=network.target
      
      [Service]
      Type=simple
      User=sammy
      Group=sammy
      ExecStart=/opt/calibre/calibre-server /home/sammy/calibre-library --enable-local-write
      
      [Install]
      WantedBy=multi-user.target
      

      Here we tell our service to use the --enable-local-write flag when starting the server. When the server is running, you can’t use the calibredb command to add books as we did for A Christmas Carol directly. Instead, you have to do this “through” the running server, as we’ll see in a bit, and this means that the server needs permission to write new files to disk. This flag allows it to do so as long as it receives the request locally.

      Save and close the file.

      Now enable the service and start it:

      • sudo systemctl enable calibre-server
      • sudo systemctl start calibre-server

      Reboot your server:

      Wait a few minutes and then visit http://your_server_ip:8080 again in your local web browser to ensure that the calibre Content server booted automatically.

      Now let’s add some authentication to our application.

      Step 5 — (Optional) Adding User Authentication to the calibre Content Server

      You now have a fully functioning calibre Content server that you can access from any device. Currently, however, anyone who knows your server’s IP address can access your ebooks. You might not want this. Instead, let’s configure calibre’s built-in user management system so you can force visitors to authenticate with a username and password.

      First, SSH back into your server and stop calibre. This will allow us to manipulate calibre’s database directly:

      • sudo systemctl stop calibre-server

      Now start calibre’s user management script:

      • calibre-server --manage-users

      When prompted, choose to add a new user. Then select a username and strong password. You will see a final output message like this:

      Output

      User mycalibreuser added successfully!

      Now we need to make one small edit to our service.

      Reopen calibre-server.service:

      • sudo nano /etc/systemd/system/calibre-server.service

      To enable authentication, add the --enable-auth flag to the end of the line starting ExecStart. It should look like this:

      . . .
      ExecStart=/opt/calibre/calibre-server /home/sammy/calibre-library --enable-local-write --enable-auth
      . . .
      

      Save and close the file.

      Refresh the services daemon to rescan the services files, and start the calibre server again with:

      • sudo systemctl daemon-reload
      • sudo systemctl start calibre-server

      If you visit your library again, it should now prompt you for a username and password before allowing you to access it.

      There are more ways to add functionality to our calibre Content server. In the next step, we will add a cron job to automatically add downloaded books to our calibre library.

      Step 6 — (Optional) Automatically Adding Books to Your calibre Library

      It can be useful to set up a cron job that watches a specific directory and adds any books it finds to your calibre library. This way, you can download or upload books to this folder and they’ll automatically become available via the calibre web interface.

      Create a folder called books-to-add in your home directory and navigate inside:

      • mkdir ~/books-to-add
      • cd ~/books-to-add

      Download a new book into this directory. Use the following command to download Alice in Wonderland from Project Gutenberg:

      • wget https://www.gutenberg.org/ebooks/11.epub.images -o alice.epub

      Now open your crontab:

      Here we will set up a script to add all files in this directory to calibre and then delete them (adding books to calibre creates a copy of the files in your library directory, so we can remove the originals once they are added.)

      Add the following content:

      /var/spool/cron/crontabs/your_username

      */5 * * * * calibredb add /home/sammy/books-to-add/ -r --with-library http://localhost:8080#calibre-library --username mycalibreuser --password StrongPassword! && rm -r /home/sammy/books-to-add/*
      

      Save and close the file.

      This will run every 5 minutes, so you shouldn’t have to wait long for your new book to show up in the web interface. Wait a few minutes and then reload the library in your local web browser. Your new book will appear next to A Christmas Carol.

      Step 7 — (Optional) Installing Apache2 and Serving Your Library over HTTPS

      You need a username and password to access your library, but it’s not really secure because you are serving it over HTTP and sending your username and password unencrypted every time you authenticate. A more secure option is to ensure all traffic gets encrypted using HTTPS. If you own a domain name you can point this to your server and install a free SSL certificate using Let’s Encrypt. (You can also use a subdomain like ebooks.your_domain.)

      Installing and Configuring Apache2

      We’ll use the webserver Apache2 as a reverse proxy for calibre. Previously we had to append the port number :8080 when we visited our library because that’s the default port that calibre runs on. We’ll now set up Apache2 to listen to requests on port 80 (the default port for HTTP traffic), proxy requests to the locally running calibre server on :8080, and serve these to the end user transparently so that they won’t need to worry about specifying the port number. We will then secure all our traffic on port 443 with an SSL certificate.

      Install Apache2 and enable the proxy modules we need with the following commands:

      • sudo apt install -y apache2
      • sudo a2enmod proxy proxy_http

      Now make sure that your server allows traffic on ports 80 and 443. Close port 8080, too:

      • sudo ufw allow 'Apache Full'
      • sudo ufw delete allow 8080

      Next, create and open a file at /etc/apache2/sites-available/your_domain.conf:

      • sudo nano /etc/apache2/sites-available/your_domain.conf

      Add the following configurations, which will link your domain to the calibre server:

      /etc/apache2/sites-available/your_domain.conf

      LoadModule proxy_module modules/mod_proxy.so
      LoadModule proxy_http_module modules/mod_proxy_http.so
      
      <VirtualHost *:80>
          ServerName your_domain
          AllowEncodedSlashes On
          ProxyPreserveHost On
          ProxyPass "/"  "http://localhost:8080/"
      </VirtualHost>
      

      Finally, enable this new site configuration:

      • sudo a2ensite your_domain.conf
      • systemctl reload apache2

      Visit http://your_domain in a browser to verify that the calibre Content server loads. Apache is now serving your site.

      Installing Certbot and Configuring an SSL Certificate

      As a final step, let’s secure all our traffic using Certbot.

      First, install Certbot:

      • sudo snap install --classic certbot

      Now run Certbot:

      The Certbot program will take you through a series of prompts to install a certificate.

      • Enter your email address when prompted
      • Enter A to agree to the terms and conditions when prompted
      • Choose Y or N when prompted to share your email address with the EFF
      • Choose 1 when prompted about which domain you want the certificate for (there should only be one)

      Upon completion, you will see a congratulations message.

      You can now access your library securely at https://yourdomain.

      Conclusion

      In this tutorial, you set up a calibre ebook server. You turned it into a service so that it would start when your server boots, added a cron job to automatically find and add new books to your library, and set up authentication and an SSL certificate to secure it.

      To extend the project, you can add more books from your personal library or from Project Gutenberg, Standard Ebooks, or elsewhere. Remember to always respect any copyright laws associated with your content library.



      Source link