I decided to dedicate my weekend to server maintenance and documentation.

Yesterday, I managed to install Immich using Quadlets, following the instructions on this very insightful repository, then I tried to migrate a Nextcloud installation from YunoHost to my new homelab. I started a #tmux session so that @sirodoht could kindly join to help me. We tinkered for two hours, but there was too much to do 🤯

Today, I spent the whole day writing documentation for these and many other things I learned/did in the past couple of months, since I am terrible at taking notes of the technical experiments I do.

I am exhausted, but also quite discouraged. The more I write, the more I feel there is to write. I really think I don’t have the time and the energy, but when it’s done it’s very fulfilling, and it’s very useful to have a lot of references in the future.

I will edit this post once what I wrote gets published on tommi.space.

#Immich #Podman #Quadlet #Quadlets #systemd #Linux #containers #tmux #documentation

Immich

Self-hosted photo and video management solution. Easily back up, organize, and manage your photos on your own server. Immich helps you browse, search and organize your photos and videos with ease, without sacrificing your privacy.

Immich
Podman with Quadlet - Getting Started Guide https://github.com/fpatrick/podman-quadlet #Quadlet #Podman
Sengaja tulis ini pakai akun misskey biar gak kejedot limit karakter.

Mengapa saya menggunakan dan menginstruksikan lingkungan yang berada dalam kendali saya menggunakan #podman bukan #docker dalam menjalankan #container

Pertama, docker membutuhkan daemon (yang defaultnya berjalan sebagai root) sedangkan podman sifatnya daemonless. Disini ada single point-of-failure. Sehingga jika ada bug atau apa, docker akan lebih rentan bisa menganggu host. Selain itu hal ini mengharuskan user yang ingin menjalankan container harus tergabung dalam group docker. Berbeda dengan podman dimana container yang dijalankan akan menjadi child-process dari user yang menjalankan.

Ada update pada runtime docker? Kita harus me-restart daemon docker dan artinya akan me-restart semua container yang berjalan.

Docker (katanya) fokus pada masing-masing container dan mengandalkan tool docker-compose untuk membungkus beberapa container, sedangkan podman mengenal konsep pod secara native yang menyerupai konsep pada pengoperasian #kubernetes. Bahkan podman bisa membuat yaml kubernetes dari pod.

Podman hanya kalah popular. Mungkin ini disebabkan karena docker adalah pelopor yang sukses. Mungkin anda akan berpikir kan banyaknya container-container yang tersedia adalah untuk docker seperti yang tersaji di Docker Hub. Tapi tahukah anda? Container image podman dan docker adalah sama, mengikuti standar OCI (Open Container Initiative). Jadi anda dapat menjalankan semua container image yang tersedia di Docker Hub dan container registry lain seperti #ghcr atau #quay dengan menggunakan podman.

Integrasi container-container dengan sistem juga akan lebih sederhana (kalau anda sudah menyadarinya). Docker menggunakan mekanisme sendiri untuk start/stop/restart container. Sedangkan container pada podman bisa sangat terintegrasi dengan #systemd, apalagi sejak dikenalkannya #quadlet. Format file quadlet sangatlah identik dengan file unit servis systemd. Dengan penggunaan quadlet, anda dapat start/stop/restart dengan menggunakan systemctl nya systemd.

PS: Penjelasan tadi adalah jawaban formal. Sebenarnya mengapa saya menggunakan podman adalah karena saya pengguna setia environment #Fedora dan #RHEL ✌✌✌✌✌
When testing #Podman 5.8 and #containers on #Fedora 44 Beta, #Quadletman https://github.com/mikkovihonen/quadletman proved to be a nice addition to tools. With #Quadlet Multi-File Install, you have a multi-container setup, similar to Compose, managed by #systemd on #Linux. #opensource #quadlets
GitHub - mikkovihonen/quadletman: Web application for managing rootless podman containers with quadlets and systemd

Web application for managing rootless podman containers with quadlets and systemd - mikkovihonen/quadletman

GitHub

Tips buat yang jalanin #container terutama menggunakan #podman dan #quadlet.

Jika container tersebut butuh konsistensi data pada storage, misalnya database, biasanya untuk memberhentikan container itu butuh waktu yang cukup lama karena container tersebut akan melakukan "bersih-bersih" terlebih dahulu.

Timeout default saat stop container quadlet adalah 10 detik (yang merupakan default dari podman). Seringkali ini tidaklah cukup. Jika diabaikan, aplikasi di container tersebut akan diterminasi paksa sebelum dia selesai bersih-bersih.

Agar tidak di-terminasi paksa jika lebih dari 10 detik, naikkan batas timeout misal menjadi 120 detik (atau nilai lain yang dianggap wajar).

Caranya cukup edit file quadlet anda:

[Container] ... ... ... PodmanArgs=--stop-timeout 120 ... ... ... [Service] ... ... ... TimeoutStopSec=120 ... ... ...

Catatan, [Container] dan [Service] tidak perlu anda ketik ulang, karena biasanya sudah ada di file quadlet tersebut. "..." juga hanya sebagai ilustrasi saja, tidak perlu anda ketik ulang.

Mengapa butuh dua baris tersebut, di [Container] dan juga [Service]?

Pada section --stop-timeout= pada section [Container] itu fungsinya untuk memberitahu podman bahwa batas timeout adalah 120 detik.

Sedangkan TimeoutStopSec= pada section [Service] untuk menaikkan batas timeout #systemd ketika menunggu podman selesai melakukan terminasi.

Jadi pada [Container] itu untuk timeout podman menunggu aplikasi selesai. Sedangkan pada [Service] untuk timeout systemd menunggu podman selesai.

You might have noticed that I have spend some time in my Quadlets Repo, taking care of some Grafana stuff.

Took me a bit to understand it but I’m quite happy with the result.

Check it out if you’d like to deploy your Grafana instance with a few extras in your homelab!

https://codeberg.org/Spoljarevic/Quadlets/src/branch/master/rootless/containers/systemd/Monitoring%20-%20prometheus%20and%20grafana

#git #codeberg #monitoring #grafana #prometheus #NodeExporter #podmanexporter #tailscale #tailscaleexporter #podman #quadlet #quadlets #rootless

Quadlets

Containers are an essential skill for every Sysadmin. Red Hat's Podman makes this easy and secure with rootless Containers. But a normal container or Compose needs to be started manually, Quadlets change that. Use my presents and convert them into SystemD Services with the Wiki Page I wrote.

Codeberg.org
Writing Quadlets

The first documented appearance of a Quadlet in my infrastructure is OwnCloud a few years ago. Since then I have moved all of my services to a common Quadle...

pancake

Out of boredom, I thought why not give the Zammad Quadlets another try.
Originally, I planned to work on them next month but I just couldn’t resist.

And would you look at that, adding two more variables to the nginx container fixed the problem.

Now the Quadlets are working like a charm, meaning I need a new project for next month.

The wiki will probably be finished by the end of this week.

Check them out and give them a try by cloning my codeberg repo!

https://codeberg.org/Spoljarevic/Zammad-Podman-Quadlets/src/branch/master

#podman #quadlets #quadlet #podmanquadlets #coding #troubleshooting #codeberg #dns #repo #zammad #ticket #tickets #ticketsystem

Zammad-Podman-Quadlets

Fully functional Quadlets for the open source Ticket System Zammad

Codeberg.org

Tänään taistelin podmanin ja Debianin kanssa. Quadlet systemd -juidut eivät vaan ottaneet toimiakseen. Luin blogeja, foorumeita ja turvauduin tekoälyyn, mutta ei…

Sitten luin podman-systemd.unit manuaalisivun ja homma rokkasi parissa minuutissa.

#RTFM #podman #debian #quadlet

How do I use journalctl from the root account to tail logs of a service running as a user ? I am using #podman #quadlets to manage containers using #systemd btw

Doing this:

journalctl --user --machine=containeruser@ -xeu helloworld.service

Gives me this error:

Failed to open root directory of machine 'containeruser@': No machine 'containeruser@' known
Failed to open journal: No such device or address

help!?

#linux #selfhosting #quadlet