diff --git a/README.md b/README.md index 212aa99b3..c5019a47b 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,6 @@ Anthias is a digital signage platform for Raspberry Pi devices and PCs. Formerly known as Screenly OSE, it was rebranded to clear up the confusion between Screenly (the paid version) and Anthias. More details can be found in [this blog post](https://www.screenly.io/blog/2022/12/06/screenly-ose-now-called-anthias/). -:tada: **NEW: Now with Raspberry Pi 5 Support!** :tada: - Want to help Anthias thrive? Support us using [GitHub Sponsor](https://github.com/sponsors/Screenly). ## :rocket: Getting Started @@ -33,10 +31,6 @@ See [this](/docs/installation-options.md) page for options on how to install Ant ## :white_check_mark: Compatibility -> [!WARNING] -> Anthias does not currently support devices running Debian Trixie. -> Please use Debian Bookworm or Raspberry Pi OS Bookworm for the best experience. - ### balenaOS > [!NOTE] @@ -46,12 +40,12 @@ See [this](/docs/installation-options.md) page for options on how to install Ant ### Raspberry Pi OS -* Raspberry Pi 5 Model B - 64-bit Bookworm **(NEW!)** -* Raspberry Pi 4 Model B - 32-bit and 64-bit Bullseye, 64-bit Bookworm -* Raspberry Pi 3 Model B+ - 32-bit and 64-bit Bullseye, 64-bit Bookworm -* Raspberry Pi 3 Model B - 64-bit Bookworm and Bullseye -* Raspberry Pi 2 Model B - 32-bit Bookworm and Bullseye -* PC (x86 Devices) - 64-bit Bookworm +* Raspberry Pi 5 Model B - 64-bit Trixie, 64-bit Bookworm +* Raspberry Pi 4 Model B - 64-bit Trixie, 64-bit Bookworm +* Raspberry Pi 3 Model B+ - 64-bit Trixie, 64-bit Bookworm +* Raspberry Pi 3 Model B - 64-bit Trixie, 64-bit Bookworm +* Raspberry Pi 2 Model B - 32-bit Trixie, 32-bit Bookworm +* PC (x86 Devices) - 64-bit Trixie, 64-bit Bookworm * These devices can be something similar to a NUC. * See [this](/docs/x86-installation.md) page for instructions on how to install Debian in a specific way before running the [installation script](/docs/installation-options.md#installing-on-raspberry-pi-os-lite-or-debian). diff --git a/ansible/roles/network/tasks/main.yml b/ansible/roles/network/tasks/main.yml index 4b50c71d7..a480eb13d 100644 --- a/ansible/roles/network/tasks/main.yml +++ b/ansible/roles/network/tasks/main.yml @@ -68,14 +68,18 @@ regexp: '^Identity=.*' replace: "Identity=unix-group:netdev;unix-group:sudo:{{ lookup('env', 'USER') }}" dest: /var/lib/polkit-1/localauthority/10-vendor.d/org.freedesktop.NetworkManager.pkla - when: manage_network|bool + when: + - manage_network|bool + - ansible_distribution_major_version|int <= 12 - name: Set ResultAny to yes ansible.builtin.replace: regexp: '^ResultAny=.*' replace: 'ResultAny=yes' dest: /var/lib/polkit-1/localauthority/10-vendor.d/org.freedesktop.NetworkManager.pkla - when: manage_network|bool + when: + - manage_network|bool + - ansible_distribution_major_version|int <= 12 - name: Get stat of org.freedesktop.NetworkManager.pkla ansible.builtin.stat: @@ -87,9 +91,29 @@ mkdir -p /etc/polkit-1/localauthority/50-local.d cp -f /var/lib/polkit-1/localauthority/10-vendor.d/org.freedesktop.NetworkManager.pkla \ /etc/polkit-1/localauthority/50-local.d - when: manage_network|bool + when: + - manage_network|bool + - ansible_distribution_major_version|int <= 12 changed_when: not nm_pkla_path.stat.exists +- name: Create polkit rules for NetworkManager (Trixie+) + ansible.builtin.copy: + dest: /etc/polkit-1/rules.d/50-network-manager.rules + owner: root + group: root + mode: "0644" + content: | + polkit.addRule(function(action, subject) { + if (action.id.indexOf("org.freedesktop.NetworkManager.") === 0 && + (subject.isInGroup("netdev") || subject.isInGroup("sudo") || + subject.user === "{{ lookup('env', 'USER') }}")) { + return polkit.Result.YES; + } + }); + when: + - manage_network|bool + - ansible_distribution_major_version|int >= 13 + - name: Disable dhcpcd ansible.builtin.systemd: state: stopped diff --git a/ansible/roles/system/tasks/main.yml b/ansible/roles/system/tasks/main.yml index ea358241a..894fa8e38 100644 --- a/ansible/roles/system/tasks/main.yml +++ b/ansible/roles/system/tasks/main.yml @@ -257,20 +257,21 @@ - docker-compose state: absent -- name: Add Docker apt key (x86) - ansible.builtin.apt_key: - url: https://download.docker.com/linux/debian/gpg - state: present - when: ansible_architecture == "x86_64" +- name: Create keyrings directory + ansible.builtin.file: + path: /etc/apt/keyrings + state: directory + owner: root + group: root + mode: "0755" -- name: Add Docker apt key (Raspberry Pi) - ansible.builtin.apt_key: - url: https://download.docker.com/linux/raspbian/gpg - state: present - when: | - ansible_architecture == "aarch64" or - ansible_architecture == "armv7l" or - ansible_architecture == "armv6l" +- name: Add Docker apt key + ansible.builtin.get_url: + url: https://download.docker.com/linux/debian/gpg + dest: /etc/apt/keyrings/docker.asc + owner: root + group: root + mode: "0644" - name: Get Debian name ansible.builtin.command: lsb_release -cs @@ -306,7 +307,7 @@ ansible.builtin.lineinfile: path: /etc/apt/sources.list.d/docker.list create: true - line: "deb [arch={{ architecture }}] https://download.docker.com/linux/debian {{ debian_name.stdout }} stable" + line: "deb [arch={{ architecture }} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian {{ debian_name.stdout }} stable" state: present owner: root group: root @@ -321,6 +322,17 @@ update_cache: true install_recommends: false +- name: Check if /etc/timezone exists + ansible.builtin.stat: + path: /etc/timezone + register: etc_timezone + +- name: Create /etc/timezone from /etc/localtime if missing + ansible.builtin.shell: | + readlink -f /etc/localtime | sed 's|.*/zoneinfo/||' > /etc/timezone + when: not etc_timezone.stat.exists + changed_when: not etc_timezone.stat.exists + - name: Add user to Docker group (all platforms) ansible.builtin.user: name: "{{ lookup('env', 'USER') }}" diff --git a/docs/installation-options.md b/docs/installation-options.md index e1b6d4130..48daa8214 100644 --- a/docs/installation-options.md +++ b/docs/installation-options.md @@ -61,17 +61,13 @@ Starting with [v0.19.0](https://github.com/Screenly/Anthias/releases/tag/v0.19.0 If you'd like more control over your digital signage instance, try installing it on Raspberry Pi OS Lite or Debian. -> [!WARNING] -> Anthias does not currently support devices running Debian Trixie. -> Please use Debian Bookworm or Raspberry Pi OS Bookworm for the best experience. - > [!IMPORTANT] > When installing on PC (x86) devices, make sure do follow the steps in the [x86 installation guide](/docs/x86-installation.md) > so that the installation script will work. > [!NOTE] > For Raspberry Pi 5: -> * We recommend using the 64-bit version of Raspberry Pi OS Lite (Bookworm) +> * We recommend using the 64-bit version of Raspberry Pi OS Lite (Trixie or Bookworm) > * 32-bit Raspberry Pi OS is not supported on Pi 5 > * If you experience any issues, please report them either: > * On our [forums](https://forums.screenly.io) diff --git a/docs/raspberry-pi5-ssd-install-instructions.md b/docs/raspberry-pi5-ssd-install-instructions.md index 46a3eba21..692bab82f 100644 --- a/docs/raspberry-pi5-ssd-install-instructions.md +++ b/docs/raspberry-pi5-ssd-install-instructions.md @@ -1,9 +1,5 @@ # How to install on a Raspberry Pi 5 with PCI-e SSD -> [!WARNING] -> Anthias does not currently support devices running Debian Trixie. -> Please use Raspberry Pi OS Bookworm for the best experience. - ## Hardware The following guide has been tested using a Raspberry Pi 5 with 8GB RAM and a [GeeekPi P33 PoE+PCI-e HAT](https://pipci.jeffgeerling.com/hats/geeekpi-p33-m2-nvme-poe-hat.html). @@ -18,7 +14,7 @@ Early Pi 5's do not support PCIe boot as part of the factory bootloader configur ## Installation -Using the Raspberry Pi Imager and appropriate USB adapters, write the 64-bit version of **Raspberry Pi OS Lite (Bookworm)** to the microSD card. Depending on your deployment preference, you can either write the same OS or you can deploy the **BalenaOS** image to the SSD. +Using the Raspberry Pi Imager and appropriate USB adapters, write the 64-bit version of **Raspberry Pi OS Lite (Trixie or Bookworm)** to the microSD card. Depending on your deployment preference, you can either write the same OS or you can deploy the **BalenaOS** image to the SSD. There are a few alternative ways to install: - Network boot (if enabled on the Pi) diff --git a/docs/x86-installation.md b/docs/x86-installation.md index aa7cc2309..f55fe842a 100644 --- a/docs/x86-installation.md +++ b/docs/x86-installation.md @@ -1,25 +1,25 @@ # Installing on x86 -Anthias currently supports installing on x86 devices running Debian 12 (Bookworm) via the installation script, -which means that pre-built BalenaOS disk images are not yet available. -To make sure that the script will work, you need to install Debian 12 in a specific way. +Anthias supports installing on x86 devices running Debian 13 (Trixie) or Debian 12 (Bookworm) via the +installation script, which means that pre-built BalenaOS disk images are not yet available. +To make sure that the script will work, you need to install Debian in a specific way. ## Preparing the Disk Image -You can download the disk image [here](https://cdimage.debian.org/mirror/cdimage/archive/12.11.0/amd64/iso-cd/). -The file name should look something like `debian-12.x.x-amd64-netinst.iso`. +You can download the disk image from the [official Debian website](https://www.debian.org/download). +The file name should look something like `debian-13.x.x-amd64-netinst.iso`. ## Flashing the Disk Image to a USB Drive You can use [Balena Etcher](https://www.balena.io/etcher/) or Raspberry Pi Imager (via the `Use custom` option) to flash the disk image to a USB drive. -## Installing Debian 12 +## Installing Debian * Make sure that the USB drive is plugged into the x86 device. * Make sure that the boot order is set to prioritize the USB drive. * Boot up the x86 device. -* Follow the on-screen instructions to install Debian 12, while making sure to select the following options: +* Follow the on-screen instructions to install Debian, while making sure to select the following options: * Do not set the root password so that the the non-root user will have `sudo` privileges. * Use the entire disk. * For **Software selection**, only leave the **SSH server** and **standard system utilities** selected. @@ -53,5 +53,4 @@ to flash the disk image to a USB drive. ## References -* [The Official Debian 12 Installation Guide](https://www.debian.org/releases/bookworm/amd64) -* [Step By Step Debian 12 Installation (with Screenshots) · Sangoma](https://sangomakb.atlassian.net/wiki/spaces/FP/pages/295403538/Step+By+Step+Debian+12+Installation) +* [The Official Debian Installation Guide](https://www.debian.org/releases/trixie/amd64)