Post

🎾 Service Audio Gonic

🎾 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

  • mpv n’est requis que si vous voulez le mode jukebox
  • ffmpeg n’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
gonic-via-ssh.png
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
Cet article est sous licence CC BY 4.0 par l'auteur.