diff --git a/README.md b/README.md new file mode 100644 index 0000000..61c298b --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +Kodi for YunoHost +--------------------- + +**This package is currently under development, install it at your own risk.** + +[Kodi](https://kodi.tv) transform your YunoHost server on media center that is designed to look great on your big screen TV but is just as home on a small screen. + +**Shipped version:** 16.1 from jessie backports + +[![Install Kodi with YunoHost](https://install-app.yunohost.org/install-with-yunohost.png)](https://install-app.yunohost.org/?app=kodi) +![](https://github.com/nextcloud/screenshots/blob/master/files/filelist.png) + +## Current package status +* The scprit use jessie backports to install Kodi 16 (We have to wait for Debian Strech officialy install Kodi 17) +* A dedicated kodi user is create +* Use of systemd +* You can launch Kodi with the ```sudo systemctl start kodi``` command + +## To do +* Test package on Raspberry (maybe Kodi is avaible in v17 on raspbian repo instead of v16 in debian jessie backports) +* Add option to launch Kodi at server startup +* Add the control web interface to YunoHost user interface +* Maybe we can launch Kodi from YunoHost web interface instead of SSH + +## Links + + * Report a bug: Use GitHub issues + * Kodi website: https://kodi.tv + * YunoHost website: https://yunohost.org/ \ No newline at end of file diff --git a/conf/kodi.list b/conf/kodi.list new file mode 100644 index 0000000..5ca8346 --- /dev/null +++ b/conf/kodi.list @@ -0,0 +1,4 @@ +# kodi repos +# starting with debian jessie, debian provides kodi via its backports repository +# remember: those packages are not supported by team kodi +deb http://http.debian.net/debian jessie-backports main \ No newline at end of file diff --git a/conf/kodi.service b/conf/kodi.service new file mode 100644 index 0000000..e90fc09 --- /dev/null +++ b/conf/kodi.service @@ -0,0 +1,21 @@ +[Unit] +Description = Kodi Media Center + +# if you don't need the MySQL DB backend, this should be sufficient +After = systemd-user-sessions.service network.target sound.target + +# if you need the MySQL DB backend, use this block instead of the previous +# After = systemd-user-sessions.service network.target sound.target mysql.service +# Wants = mysql.service + +[Service] +User = #KODIUSER# +Group = #KODIGROUP# +Type = simple +#PAMName = login # you might want to try this one, did not work on all systems +ExecStart = /usr/bin/xinit /usr/bin/dbus-launch --exit-with-session /usr/bin/kodi-standalone -- :0 -nolisten tcp vt7 +Restart = on-abort +RestartSec = 5 + +[Install] +WantedBy = multi-user.target \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..f91383c --- /dev/null +++ b/manifest.json @@ -0,0 +1,56 @@ +{ + "name": "Kodi", + "id": "kodi", + "packaging_format": 1, + "description": { + "en": "Transform your YunoHost server into media center with Kodi", + "fr": "Transfromez votre serveur YunoHost en media center avec Kodi" + }, + "version": "17.4", + "url": "https://kodi.tv", + "license": "free", + "maintainer": { + "name": "Sylvain Cecchetto", + "email": "cecchetto.sylvain@me.com", + "url": "blog.cecchettosylvain.fr" + }, + "requirements": { + "yunohost": ">= 2.6.4" + }, + "multi_instance": false, + "services": [ + "nginx" + ], + "arguments": { + "install" : [ + { + "name": "domain", + "type": "domain", + "ask": { + "en": "Choose a domain for the control web interface", + "fr": "Choisissez un nom de domaine pour l'interface de contrôle web" + }, + "example": "example.com" + }, + { + "name": "path", + "type": "path", + "ask": { + "en": "Choose a path for the control web interface", + "fr": "Choisissez un chemin pour l'interface de contrôle web" + }, + "example": "/kodi", + "default": "/kodi" + }, + { + "name": "launch_on_boot", + "type": "boolean", + "ask": { + "en": "Launch Kodi at YunoHost server startup", + "fr": "Démarrer Kodi au démarrage du serveur YunoHost" + }, + "default": true + } + ] + } +} \ No newline at end of file diff --git a/scripts/_common.sh b/scripts/_common.sh new file mode 100644 index 0000000..cc1f786 --- /dev/null +++ b/scripts/_common.sh @@ -0,0 +1 @@ +#!/bin/bash \ No newline at end of file diff --git a/scripts/install b/scripts/install new file mode 100644 index 0000000..83947e5 --- /dev/null +++ b/scripts/install @@ -0,0 +1,70 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# MANAGE SCRIPT FAILURE +#================================================= + +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + +#================================================= +# RETRIEVE ARGUMENTS FROM THE MANIFEST +#================================================= + +domain=$YNH_APP_ARG_DOMAIN +path_url=$YNH_APP_ARG_PATH +launch_on_boot=$YNH_APP_ARG_LAUNCH_ON_BOOT + +app=kodi +final_path=/var/www/$app +test ! -e "$final_path" || ynh_die "This path already contains a folder" + +# Normalize the url path syntax +path_url=$(ynh_normalize_url_path $path_url) + +# Check web path availability +ynh_webpath_available $domain $path_url +# Register (book) web path +ynh_webpath_register $app $domain $path_url + +#================================================= +# STORE SETTINGS FROM MANIFEST +#================================================= + +ynh_app_setting_set $app domain $domain +ynh_app_setting_set $app final_path $final_path +ynh_app_setting_set $app launch_on_boot $launch_on_boot + +#================================================= +# CREATE KODI USER +#================================================= +sudo mkdir /home/$app +ynh_system_user_create "$app" "/home/$app" +sudo chown -R $app:$app /home/$app +sudo usermod -a -G cdrom,audio,video,plugdev,users,dialout,dip,input $app +sudo sed -i 's/allowed_users=console/allowed_users=anybody/' /etc/X11/Xwrapper.config + +#================================================= +# ADD SYSTEMD SCRIPT (SERVICE) +#================================================= +sed -i "s@#KODIUSER#@${app}@g" ../conf/kodi.service +sed -i "s@#KODIGROUP#@${app}@g" ../conf/kodi.service +sudo cp ../conf/kodi.service /etc/systemd/system/kodi.service + + +#================================================= +# INSTALL DEPENDENCIES +#================================================= +sudo cp ../conf/kodi.list /etc/apt/sources.list.d/${app}.list +ynh_package_update +ynh_package_install xinit dbus-x11 kodi + diff --git a/scripts/remove b/scripts/remove new file mode 100644 index 0000000..606cc83 --- /dev/null +++ b/scripts/remove @@ -0,0 +1,57 @@ +#!/bin/bash + +#================================================= +# GENERIC START +#================================================= +# IMPORT GENERIC HELPERS +#================================================= + +source _common.sh +source /usr/share/yunohost/helpers + +#================================================= +# LOAD SETTINGS +#================================================= + +app=$YNH_APP_INSTANCE_NAME + +domain=$(ynh_app_setting_get $app domain) +final_path=$(ynh_app_setting_get $app final_path) +launch_on_boot=$(ynh_app_setting_get $app launch_on_boot) + + +#================================================= +# REMOVE DEPENDENCIES +#================================================= + +# Remove metapackage and its dependencies +ynh_package_autoremove kodi xinit dbus-x11 +sudo rm -f "/etc/apt/sources.list.d/${app}.list" +ynh_package_update + + +#================================================= +# REMOVE APP MAIN DIR +#================================================= + +# Remove the app directory securely +ynh_secure_remove "$final_path" + + +#================================================= +# REMOVE SYSTEMD SCRIPT (SERVICE) +#================================================= + +ynh_remove_systemd_config + + +#================================================= +# REMOVE KODI USER +#================================================= + +ynh_system_user_delete "$app" +sudo rm -rf "/home/$app" +sudo sed -i 's/allowed_users=anybody/allowed_users=console/' /etc/X11/Xwrapper.config + + +