đž Service Audio Gonic
Gonic est un serveur de diffusion de musique lĂ©ger conçu pour fournir aux utilisateurs un moyen simple et efficace de diffuser leurs collections de musique. Il est compatible avec le protocole Subsonic, permettant aux utilisateurs dâaccĂ©der Ă leur musique Ă partir de divers appareils et plates-formes qui prennent en charge Subsonic. Gonic se concentre sur la fourniture dâune expĂ©rience de streaming musical simplifiĂ©e sans fonctionnalitĂ©s ou complexitĂ©s inutiles, ce qui le rend idĂ©al pour les utilisateurs qui prĂ©fĂšrent une approche minimaliste du streaming musical.
Serveur Audio Gonic
Caractéristiques de Gonic
- navigation par dossier
- navigation par tags (en utilisant taglib - prend en charge mp3, opus, flac, ape, m4a, wav, etc.)
- transcodage et cache audio à la volée (demande ffmpeg)
- mode jukebox subsonic (mpv), pour lecture audio cÎté serveur sans faille au lieu de streaming
- soutien aux podcasts
- balayage assez rapide
- plusieurs utilisateurs, chacun avec ses propres préférences de transcodage, playlists, meilleurs titres, meilleurs artistes, etc.
- [last.fm] (https://www.last.fm/)
- listenbrainz scrobbling
- les similarités artistiques et les biographies de la derniÚre. - Oui.
- prise en charge de tags multi-valorisés comme les albumartistes et les genres
- une interface web pour la configuration (configurer en dernier. fm, gérer les utilisateurs, lancer des scans, etc.)
- soutien au tag album-artiste, pour ne pas encombrer votre liste dâartistes avec des apparitions dâalbums de compilation
- écrit en go
- sel plus récent et jeton auth
- testés sur airsonic-refix, symfonium, dsub, jamstash, subsonic.el, sublime music, soundwaves, stmp, strawberry, et [subs/subs/
Prérequis
Golang
1
2
sudo apt install golang
go version #go version go1.26.4 linux/amd64
Optionnel
mpvnâest requis que si vous voulez le mode jukeboxffmpegnâest requis que si vous souhaitez transcoder de lâaudio
1
sudo apt install fmpeg mpv
Installation gonic
Installer et vérifier
1
2
3
sudo wget https://github.com/sentriz/gonic/releases/download/v0.22.0/gonic-linux-amd64-v0.22.0 -O /usr/local/bin/gonic
sudo chmod +x /usr/local/bin/gonic
gonic -version # v0.22.0
ajouter un utilisateur gonic, créer un répertoire de données et installer le fichier de configuration
1
2
3
4
sudo adduser --system --no-create-home --group gonic
sudo mkdir -p /var/lib/gonic/ /etc/gonic/
sudo chown -R gonic:gonic /var/lib/gonic/
sudo wget https://raw.githubusercontent.com/sentriz/gonic/master/contrib/config -O /etc/gonic/config
mettre Ă jour la configuration /etc/gonic/config avec votre music-path, podcast-path, etcâŠ
1
2
3
4
5
6
7
8
9
music-path /sharenfs/multimedia/Music/musicyan
podcast-path /sharenfs/multimedia/Music/podcasts
playlists-path /sharenfs/multimedia/Music/playlists
# Interval (in minutes) to check for new music. Default: don't scan
scan-interval 0
scan-at-start-enabled true
scan-watcher-enabled
false
Service gonic
installer le service systĂšme, vĂ©rifier lâĂ©tat ou les journaux
Chaque service généré par systemd est configuré par un fichier .service qui se trouve dans le répertoire /etc/systemd/system
1
2
3
4
5
6
7
sudo wget https://raw.githubusercontent.com/sentriz/gonic/master/contrib/gonic.service -O /etc/systemd/system/gonic.service
sudo systemctl daemon-reload
sudo systemctl enable --now gonic
systemctl status gonic # vĂ©rifier status, doit ĂȘtre actif (running)
journalctl -f -u gonic # suivre logs
journalctl -t gonic # trace
AccĂšs web
Via SSH
- Gonic â localhost:4747
on va utiliser une redirection de port via ssh
Serveur audio gonic
Ouvrir un terminal sur le client linux qui dispose des clés ssh et lancer la commande
1
ssh -L 9500:127.0.0.1:4747 yick@192.168.0.205 -p 55205 -i /home/yann/.ssh/yick-ed25519
Ouvrir un navigateur sur le client et saisir localhost:9500 pour afficher le serveur audio gonic

Par défaut : admin/admin
Proxy nginx zic.rnmkcy.eu
Gonic est un serveur local http sur le port 4747 et pour un accĂšs externe il nous faut un proxy
Proxy nginx - configuration /etc/nginx/conf.d/zic.rnmkcy.eu.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name zic.rnmkcy.eu;
include /etc/nginx/conf.d/ssl-modern.inc;
location / {
proxy_pass http://localhost:4747;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
On vérifie et on relance le serveur nginx
1
2
sudo nginx -t
sudo systemctl reload nginx
AccĂšs https://zic.rnmkcy.eu
- CrĂ©er un utilisateur âaudioâ
- Changer le mot de passe admin
Playlist aléatoire
Tu peux inspecter la base avec sqlite3 :
1
sqlite3 /var/lib/gonic/gonic.db ".tables"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
album_credits play_queues
album_disc_titles podcast_episodes
album_genres podcasts
album_infos sessions
album_labels settings
album_ratings track_credits
album_stars track_genres
albums track_isrcs
artist_infos track_plays
artist_ratings track_ratings
artist_stars track_stars
artists tracks
bookmarks transcode_format_preferences
genres transcode_preferences
internet_radio_stations users
migrations
Voir le schéma de la table users :
1
sqlite3 /var/lib/gonic/gonic.db "PRAGMA table_info(users);"
1
2
3
4
5
6
7
8
9
0|id|INTEGER|0||1
1|created_at|datetime|0||0
2|name|varchar(255)|1|null|0
3|password|varchar(255)|1|null|0
4|last_fm_session|varchar(255)|0|null|0
5|listen_brainz_url|varchar(255)|0|null|0
6|listen_brainz_token|varchar(255)|0|null|0
7|is_admin|bool|0|null|0
8|avatar|BLOB|0|null|0
Lire les lignes :
1
2
#sqlite3 /var/lib/gonic/gonic.db "SELECT * FROM tracks LIMIT 20;"
sqlite3 /var/lib/gonic/gonic.db "SELECT * FROM users;"
1
2
1|2026-07-11T07:45:00.036938678+02:00|admin|mot_de_passe||||1|
2|2026-07-11T07:51:10.369610847+02:00|audio|mot_de_passe|||||
Si tu ne sais pas les tables, fais seulement :
1
sqlite3 /var/lib/gonic/gonic.db ".schema"
ATTENTION: Les playlists sont liĂ©es Ă lâutilisateur qui a chacun son numĂ©ro
- 1 admin /sharenfs/multimedia/Music/playlists/1
- 2 audio /sharenfs/multimedia/Music/playlists/2
Outil linux cli pour crĂ©er une playlist m3u dans le dossier utilisateur âaudioâ /sharenfs/multimedia/Music/playlists/2 Ă partir du dossier /sharenfs/multimedia/Music/musicyan/
.mp3 aléatoire , listes 100 200 300: /sharenfs/scripts/gener_playlists.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
bash -lc '
in="/sharenfs/multimedia/Music/musicyan"
outdir="/sharenfs/multimedia/Music/playlists/2"
mkdir -p "$outdir"
# nombre de playlists + tailles
sizes=(100 200 300)
# crées 1 playlist par taille (ajuste COUNT si tu veux plusieurs par taille)
for size in "${sizes[@]}"; do
out="$outdir/playlist_${size}_alatoire.m3u"
echo "#EXTM3U" > "$out"
# prend jusqua $size fichiers mp3 sans récursivité
mapfile -t files < <(find "$in" -maxdepth 1 -type f -iname "*.mp3" | shuf)
n="${#files[@]}"
if [ "$n" -gt 0 ]; then
take=$size
[ "$n" -lt "$take" ] && take="$n"
for i in $(seq 0 $((take-1))); do
printf "%s\n" "${files[$i]}" >> "$out"
done
fi
echo "OK: $out"
done
'
Le rendre exécutable et exécuter
1
2
chmod +x /sharenfs/scripts/gener_playlists.sh
/sharenfs/scripts/gener_playlists.sh
le script crée 3 fichiers M3U distincts dans /sharenfs/multimedia/Music/playlists/2/ :
1
2
3
OK: /sharenfs/multimedia/Music/playlists/2/playlist_100_alatoire.m3u
OK: /sharenfs/multimedia/Music/playlists/2/playlist_200_alatoire.m3u
OK: /sharenfs/multimedia/Music/playlists/2/playlist_300_alatoire.m3u

