4.7 KiB
4.7 KiB
- Rundown to Launch. Still to do:
- Setup asteroid.radio server at Hetzner
[7/7] - Deploy the system
[10/10] - Server runtime configuration
[0/1]
Rundown to Launch. Still to do:
Setup asteroid.radio server at Hetzner [7/7]
- Provision a VPS
- Firewall
- Install user utilities
- Install base toolchain
- Install lisp
- Set up DNS
- Create user accounts
Deploy the system [10/10]
- Install and configure HAproxy
- Create a user to contain asteroid
- Checkout asteroid in ~asteroid on b612
- Build the docker containers
- Build asteroid from the sources
- Configure HAproxy to front http://asteroid.radio/ -> http://localhost:8080/
- Set ASTEROID_STREAM_URL in ~asteroid/.bashrc
- Start the docker containers for liquidsoap, icecast, and postgresql
- Start asteroid, check the stream (Underworld:Juanita/Kiteless)
- Announce that the system is live in #asteroid.radio
PROBLEMS [3/12]
- Liquidsoap is exposing its management console via telnet on the exterior network interface of b612.asteroid.radio
- icecast is also binding the external interface on b612, which it should not be. HAproxy is there to mediate this flow.
- We're still on the built in i-lambdalite database
- The templates still advertise the default administrator password, which is no bueno.
- We need to work out the TLS situation with letsencrypt, and integrate it into HAproxy.
- The administrative interface should be beefed up. 6.1) [X] Deactivate users 6.2) [X] Change user access permissions 6.3) [ ] Listener statistics, breakdown by day/hour, new users, % changed &c
- When the player is paused, there are pretty serious stream sync issues in the form of stuttering for some time after the stream is unpaused.
- User profile pages should probably be fleshed out.
- the stream management features aren't there for Admins or DJs.
- The "Scan Library" feature is not working in the main branch
- The player widget should be styled so it fits the site theme on systems running 'light' thmes.
- ensure each info field 'Listeners: ..' &c has only one instance per page.
Server runtime configuration [0/1]
-
parameterize all configuration for runtime loading
[0/2]- strip hard coded configurations out of the system
- add configuration template file to the project
[X] Database [0/1]
-
PostgresQL
[1/3]- Add a postgresql docker image to our docker-compose file.
- Configure radiance for postres.
- Migrate all schema to new database.
[X] Page Flow [2/2] ✅ COMPLETE
- When a user logs in, their user profile page should become the root node of the app in their view.
- When the admin user logs in, their view should become the admin profile page which should have panels for adminstering various aspects of the station.
note: Front-page conditional elements working correctly - nav links display based on authentication status and user role (Profile/Admin/Logout for logged-in users, Login/Register for anonymous users).
[X] Templates: move our template hyrdration into the Clip machinery [4/4] ✅ COMPLETE
-
Admin Dashboard
[2/2]-
System Status
[4/4]- Server Status (Shows 🟢 Running)
- Database Status (Shows connection status)
- Liquidsoap Status (Checks Docker container)
- Icecast Status (Checks Docker container)
-
Music Library Management
[3/3]- Add Music Files (Upload and scan working)
- Track Management (Pagination complete - 20 tracks per page, 4 pages total) Pagination implemented with configurable items per page (10/20/50/100).
- Player Control (Play/pause/stop working with HTML5 audio) play/pause/edit &etc
- User Management (Moved to separate /admin/users page)
-
-
Live Stream
- Now Playing (Working correctly - displays artist and track)
-
Front Page
[3/3]- Station Status (Shows live status, listeners, quality)
- Live Stream (Green indicator, quality selector working)
- Now Playing (Updates every 10s from Icecast, no HTML bugs)
-
Web Player
[5/6]⚠️ MOSTLY COMPLETE (Playlists limited by database)- Live Radio Stream (Working with quality selector)
- Now Playing (Updates correctly from Icecast)
- Personal Track Library (Pagination: 20 tracks/page, search working)
- Audio Player (Full controls: play/pause/prev/next/shuffle/repeat/volume)
-
Playlists (PARTIAL - Can create/view, but cannot save/load tracks - requires PostgreSQL)
- Create empty playlists
- View playlists
- Save queue as playlist (tracks don't persist - db:update fails)
- Load playlists (playlists are empty - no tracks saved)
- Edit playlists (requires PostgreSQL)
- Play Queue (Add tracks, clear queue - save as playlist blocked by database)