add fdroid role
Signed-off-by: bic <bicno@autistici.org>
This commit is contained in:
parent
2bd2e6c70c
commit
a823468870
14 changed files with 309 additions and 0 deletions
|
@ -6,6 +6,8 @@ Un angolo ragionato per facilitare la messa in opera di servizi autogestiti di p
|
||||||
```bash
|
```bash
|
||||||
ansible-galaxy collection install community.general
|
ansible-galaxy collection install community.general
|
||||||
ansible-galaxy collection install community.postgresql
|
ansible-galaxy collection install community.postgresql
|
||||||
|
ansible-galaxy install nginxinc.nginx
|
||||||
|
ansible-galaxy install nginxinc.nginx_config
|
||||||
```
|
```
|
||||||
|
|
||||||
Silicone è una raccolta di ruoli
|
Silicone è una raccolta di ruoli
|
||||||
|
|
|
@ -33,6 +33,12 @@
|
||||||
tags: radicale
|
tags: radicale
|
||||||
roles: ['stable/common', 'staging/radicale']
|
roles: ['stable/common', 'staging/radicale']
|
||||||
|
|
||||||
|
- name: Fdroid
|
||||||
|
hosts: fdroid
|
||||||
|
tags: fdroid
|
||||||
|
roles: [ 'stable/common', 'staging/fdroid' ]
|
||||||
|
vars_files: vars/fdroid.yml
|
||||||
|
|
||||||
# TEST
|
# TEST
|
||||||
- name: Test
|
- name: Test
|
||||||
hosts: test
|
hosts: test
|
||||||
|
|
|
@ -22,6 +22,9 @@ frontend:
|
||||||
radicale:
|
radicale:
|
||||||
hosts: cisti.cal
|
hosts: cisti.cal
|
||||||
|
|
||||||
|
fdroid:
|
||||||
|
hosts: cisti.fdroid
|
||||||
|
|
||||||
test:
|
test:
|
||||||
hosts: cisti.jolly
|
hosts: cisti.jolly
|
||||||
vars:
|
vars:
|
||||||
|
|
11
roles/staging/fdroid/defaults/main.yml
Normal file
11
roles/staging/fdroid/defaults/main.yml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
fdroid_user: "fdroid"
|
||||||
|
|
||||||
|
fdroid_base_dir: "/srv/fdroid"
|
||||||
|
fdroid_android_dir: "{{ fdroid_base_dir }}/androidtools"
|
||||||
|
fdroid_repo_dir: "{{ fdroid_base_dir }}/repository"
|
||||||
|
fdroid_utils_dir: "{{ fdroid_base_dir }}/utils"
|
||||||
|
fdroid_html_dir: "{{ fdroid_base_dir }}/html"
|
||||||
|
|
||||||
|
fdroid_keystore_pass: ""
|
8
roles/staging/fdroid/files/apk-dl
Normal file
8
roles/staging/fdroid/files/apk-dl
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
while IFS= read -r line
|
||||||
|
do
|
||||||
|
gplaycli -d "$line" -f "$2"
|
||||||
|
done < "$1"
|
||||||
|
|
||||||
|
fdroid update --create-metadata --pretty --clean
|
16
roles/staging/fdroid/files/applist
Normal file
16
roles/staging/fdroid/files/applist
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
|
||||||
|
org.mozilla.firefox
|
||||||
|
org.thoughtcrime.securesms
|
||||||
|
com.whatsapp
|
||||||
|
com.lynxspa.prontotreno
|
||||||
|
com.shazam.android
|
||||||
|
me.bgregos.brighttask
|
||||||
|
com.spotify.music
|
||||||
|
com.generalmagic.magicearth
|
||||||
|
org.dslul.openboard.inputmethod.latin
|
||||||
|
com.chimbori.hermitcrab
|
||||||
|
com.fineco.it
|
||||||
|
ch.protonmail.android
|
||||||
|
com.skype.m2
|
||||||
|
posteitaliane.posteapp.appposteid
|
||||||
|
com.smartlifedigital.autodialer
|
BIN
roles/staging/fdroid/files/cisti.png
Normal file
BIN
roles/staging/fdroid/files/cisti.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1,020 KiB |
16
roles/staging/fdroid/files/gplaylist
Executable file
16
roles/staging/fdroid/files/gplaylist
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
export ANDROID_HOME=/home/bic/workspace/android/Sdk
|
||||||
|
|
||||||
|
if [ "$1" = "-d" ]; then
|
||||||
|
while IFS= read -r line
|
||||||
|
do
|
||||||
|
echo "$line"
|
||||||
|
gplaycli -d "$line" -f repo
|
||||||
|
done < applist
|
||||||
|
fi
|
||||||
|
|
||||||
|
fdroid update --create-metadata --use-date-from-apk --pretty --clean --verbose
|
||||||
|
fdroid deploy
|
||||||
|
|
||||||
|
|
43
roles/staging/fdroid/meta/main.yml
Normal file
43
roles/staging/fdroid/meta/main.yml
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
---
|
||||||
|
galaxy_info:
|
||||||
|
role_name: fdroid
|
||||||
|
author: hacklab underscore
|
||||||
|
description: install an fdroid server and gplaycli tool
|
||||||
|
company: cisti.org
|
||||||
|
|
||||||
|
min_ansible_version: 1.2
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: Debian
|
||||||
|
versions:
|
||||||
|
- buster
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
|
||||||
|
- role: nginxinc.nginx
|
||||||
|
- role: nginxinc.nginx_config
|
||||||
|
vars:
|
||||||
|
nginx_config_http_template_enable: true
|
||||||
|
nginx_config_http_template:
|
||||||
|
app:
|
||||||
|
template_file: http/default.conf.j2
|
||||||
|
conf_file_name: default.conf
|
||||||
|
conf_file_location: /etc/nginx/conf.d/
|
||||||
|
servers:
|
||||||
|
server1:
|
||||||
|
listen:
|
||||||
|
listen_localhost:
|
||||||
|
port: 80
|
||||||
|
server_name: localhost
|
||||||
|
web_server:
|
||||||
|
locations:
|
||||||
|
main_site:
|
||||||
|
location: /
|
||||||
|
html_file_location: "{{ fdroid_html_dir }}"
|
||||||
|
autoindex: true
|
||||||
|
|
||||||
|
- role: stable/restic
|
||||||
|
when: with_backup | bool
|
||||||
|
vars:
|
||||||
|
restic_folders: ['{{ fdroid_repo_dir }}']
|
||||||
|
|
127
roles/staging/fdroid/tasks/main.yml
Normal file
127
roles/staging/fdroid/tasks/main.yml
Normal file
|
@ -0,0 +1,127 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- name: Install fdroid server
|
||||||
|
become: yes
|
||||||
|
register: install_fdroid
|
||||||
|
apt:
|
||||||
|
pkg:
|
||||||
|
- python3-pip
|
||||||
|
- fdroidserver
|
||||||
|
|
||||||
|
- name: Install gplaycli
|
||||||
|
become: yes
|
||||||
|
register: install_gplaycli
|
||||||
|
pip:
|
||||||
|
name: gplaycli
|
||||||
|
|
||||||
|
|
||||||
|
- name: check for fdroid user
|
||||||
|
user:
|
||||||
|
name: "{{ fdroid_user }}"
|
||||||
|
home: "{{ fdroid_base_dir }}"
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Create directories
|
||||||
|
file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
owner: "{{ fdroid_user }}"
|
||||||
|
mode: 0775
|
||||||
|
with_items:
|
||||||
|
- "{{ fdroid_base_dir }}"
|
||||||
|
- "{{ fdroid_android_dir }}"
|
||||||
|
- "{{ fdroid_repo_dir }}"
|
||||||
|
- "{{ fdroid_utils_dir }}"
|
||||||
|
- "{{ fdroid_repo_dir }}/repo"
|
||||||
|
- "{{ fdroid_html_dir }}"
|
||||||
|
|
||||||
|
- name: Unarchive android sdk
|
||||||
|
become: yes
|
||||||
|
become_user: "{{ fdroid_user }}"
|
||||||
|
register: download_sdk
|
||||||
|
ansible.builtin.unarchive:
|
||||||
|
src: https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip
|
||||||
|
dest: "{{ fdroid_android_dir }}"
|
||||||
|
remote_src: yes
|
||||||
|
|
||||||
|
- name: Initialize android sdk
|
||||||
|
become: yes
|
||||||
|
become_user: "{{ fdroid_user }}"
|
||||||
|
register: download_build_tools
|
||||||
|
shell: 'yes | {{ fdroid_android_dir }}/cmdline-tools/bin/sdkmanager --sdk_root="$ANDROID_HOME" platform-tools "build-tools;30.0.3"'
|
||||||
|
environment:
|
||||||
|
ANDROID_HOME: "{{ fdroid_android_dir }}/android-sdk-linux"
|
||||||
|
tags: ['skip_ansible_lint']
|
||||||
|
|
||||||
|
- name: Upload settings
|
||||||
|
template:
|
||||||
|
src: config.py.j2
|
||||||
|
dest: "{{ fdroid_repo_dir }}/config.py"
|
||||||
|
owner: "{{ fdroid_user }}"
|
||||||
|
mode: 0600
|
||||||
|
|
||||||
|
- name: Upload cisti img
|
||||||
|
copy:
|
||||||
|
src: files/cisti.png
|
||||||
|
dest: "{{ fdroid_repo_dir }}/cisti.png"
|
||||||
|
owner: "{{ fdroid_user }}"
|
||||||
|
mode: 0660
|
||||||
|
|
||||||
|
- name: Local decrypt keystore
|
||||||
|
delegate_to: localhost
|
||||||
|
shell: "pass show cisti.org/ansible/fdroid/keystore > /tmp/cisti.keystore"
|
||||||
|
tags: ['skip_ansible_lint']
|
||||||
|
|
||||||
|
- name: Upload keystore
|
||||||
|
copy:
|
||||||
|
src: /tmp/cisti.keystore
|
||||||
|
dest: "{{ fdroid_repo_dir }}/cisti.keystore"
|
||||||
|
owner: "{{ fdroid_user }}"
|
||||||
|
mode: 0600
|
||||||
|
|
||||||
|
- name: Remove file (delete file)
|
||||||
|
delegate_to: localhost
|
||||||
|
file:
|
||||||
|
path: /tmp/cisti.keystore
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
- name: Upload apk list
|
||||||
|
copy:
|
||||||
|
src: files/applist
|
||||||
|
dest: "{{ fdroid_base_dir }}/apklist"
|
||||||
|
owner: "{{ fdroid_user }}"
|
||||||
|
mode: 0660
|
||||||
|
|
||||||
|
- name: Upload apk-dl
|
||||||
|
copy:
|
||||||
|
src: files/apk-dl
|
||||||
|
dest: "{{ fdroid_utils_dir }}/apk-dl"
|
||||||
|
owner: "{{ fdroid_user }}"
|
||||||
|
mode: 0700
|
||||||
|
|
||||||
|
- name: Upload service for apk poller
|
||||||
|
template:
|
||||||
|
src: fdroid.service.j2
|
||||||
|
dest: /etc/systemd/system/fdroid.service
|
||||||
|
owner: "{{ fdroid_user }}"
|
||||||
|
mode: 0660
|
||||||
|
|
||||||
|
- name: Upload timer for apk poller
|
||||||
|
template:
|
||||||
|
src: fdroid.timer.j2
|
||||||
|
dest: /etc/systemd/system/fdroid.timer
|
||||||
|
owner: "{{ fdroid_user }}"
|
||||||
|
mode: 0660
|
||||||
|
|
||||||
|
- name: Make sure apk poller is running
|
||||||
|
systemd:
|
||||||
|
state: restarted
|
||||||
|
daemon_reload: yes
|
||||||
|
name: fdroid
|
||||||
|
|
||||||
|
- name: Link repo into public dir
|
||||||
|
file:
|
||||||
|
src: "{{ fdroid_repo_dir }}/repo"
|
||||||
|
path: "{{ fdroid_html_dir }}/repo"
|
||||||
|
state: link
|
||||||
|
owner: "{{ fdroid_user }}"
|
39
roles/staging/fdroid/templates/config.py.j2
Normal file
39
roles/staging/fdroid/templates/config.py.j2
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
sdk_path = "{{ fdroid_android_dir }}/android-sdk-linux"
|
||||||
|
|
||||||
|
build_tools = "30.0.3"
|
||||||
|
|
||||||
|
repo_url = "https://fdroid.cisti.org/repo"
|
||||||
|
repo_name = "Cisti.org"
|
||||||
|
repo_icon = "cisti.png"
|
||||||
|
repo_description = """
|
||||||
|
Questo archivio contiene applicazioni scaricate dal play store di google su
|
||||||
|
richiesta degli utenti di cisti.org
|
||||||
|
"""
|
||||||
|
|
||||||
|
# `fdroid update` will create a link to the current version of a given app.
|
||||||
|
# This provides a static path to the current APK. To disable the creation of
|
||||||
|
# this link, uncomment this:
|
||||||
|
make_current_version_link = False
|
||||||
|
|
||||||
|
# The key (from the keystore defined below) to be used for signing the
|
||||||
|
# repository itself. This is the same name you would give to keytool or
|
||||||
|
# jarsigner using -alias. (Not needed in an unsigned repository).
|
||||||
|
repo_keyalias = "cisti"
|
||||||
|
|
||||||
|
keystore = "cisti.keystore"
|
||||||
|
|
||||||
|
# The password for the keystore (at least 6 characters). If this password is
|
||||||
|
# different than the keypass below, it can be OK to store the password in this
|
||||||
|
# file for real use. But in general, sensitive passwords should not be stored
|
||||||
|
# in text files!
|
||||||
|
keystorepass = "{{ fdroid_keystore_pass }}"
|
||||||
|
|
||||||
|
# The password for keys - the same is used for each auto-generated key as well
|
||||||
|
# as for the repository key. You should not normally store this password in a
|
||||||
|
# file since it is a sensitive password.
|
||||||
|
keypass = "{{ fdroid_keystore_pass }}"
|
||||||
|
|
||||||
|
# The distinguished name used for all keys.
|
||||||
|
keydname = "CN=cisti, OU=Unknown, O=cisti.org, L=Unknown, ST=Unknown, C=Unknown"
|
24
roles/staging/fdroid/templates/fdroid.service.j2
Normal file
24
roles/staging/fdroid/templates/fdroid.service.j2
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
[Unit]
|
||||||
|
Description=A simple apk downloader
|
||||||
|
After=network.target
|
||||||
|
Requires=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart={{ fdroid_utils_dir }}/apk-dl {{ fdroid_base_dir }}/apklist {{ fdroid_repo_dir }}/repo
|
||||||
|
WorkingDirectory={{ fdroid_repo_dir }}
|
||||||
|
User={{ fdroid_user }}
|
||||||
|
|
||||||
|
# Optional security settings
|
||||||
|
PrivateTmp=true
|
||||||
|
ProtectSystem=strict
|
||||||
|
ProtectHome=true
|
||||||
|
PrivateDevices=true
|
||||||
|
ProtectKernelTunables=true
|
||||||
|
ProtectKernelModules=true
|
||||||
|
ProtectControlGroups=true
|
||||||
|
NoNewPrivileges=true
|
||||||
|
ReadWritePaths={{ fdroid_repo_dir }}
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
9
roles/staging/fdroid/templates/fdroid.timer.j2
Normal file
9
roles/staging/fdroid/templates/fdroid.timer.j2
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Google Play store poller timer
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnCalendar=daily
|
||||||
|
Unit=fdroid.service
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
5
vars/fdroid.yml
Normal file
5
vars/fdroid.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
with_backup: true
|
||||||
|
|
||||||
|
fdroid_repo_dir: "{{ fdroid_base_dir }}/cisti"
|
||||||
|
fdroid_keystore_pass: "{{lookup('community.general.passwordstore', '{{passwordstore_path}}/fdroid/keystore/pass')}}"
|
Loading…
Reference in a new issue