{"id":13552815,"url":"https://github.com/Wellenline/auddly-server","last_synced_at":"2025-04-03T04:30:49.975Z","repository":{"id":42236724,"uuid":"183420540","full_name":"Wellenline/auddly-server","owner":"Wellenline","description":"Simple self-hosted music streaming server","archived":false,"fork":false,"pushed_at":"2023-09-08T10:10:01.000Z","size":69078,"stargazers_count":301,"open_issues_count":16,"forks_count":13,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-11-04T00:32:29.908Z","etag":null,"topics":["api","docker","free","music","music-player","opensource","self-hosted","server","streaming","typescript","waveline-server"],"latest_commit_sha":null,"homepage":"https://auddly.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Wellenline.png","metadata":{"files":{"readme":"readme.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-04-25T11:27:55.000Z","updated_at":"2024-10-14T11:50:44.000Z","dependencies_parsed_at":"2024-01-14T08:09:12.078Z","dependency_job_id":"3bf73f96-d499-494a-b17d-40270e149528","html_url":"https://github.com/Wellenline/auddly-server","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wellenline%2Fauddly-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wellenline%2Fauddly-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wellenline%2Fauddly-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wellenline%2Fauddly-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Wellenline","download_url":"https://codeload.github.com/Wellenline/auddly-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246939098,"owners_count":20857916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","docker","free","music","music-player","opensource","self-hosted","server","streaming","typescript","waveline-server"],"created_at":"2024-08-01T12:02:10.913Z","updated_at":"2025-04-03T04:30:49.691Z","avatar_url":"https://github.com/Wellenline.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","置顶"],"sub_categories":["08、家庭与物联网"],"readme":"\u003ca href=\"https://music.auddly.app\" target=\"_blank\"\u003e\n\t\u003cimg src=\"https://raw.githubusercontent.com/Wellenline/auddly/dev/app-icon.png\" width=\"100\"\u003e\n\u003c/a\u003e\n\n# Auddly Music Server\n[![Discord](https://img.shields.io/discord/712899309242286090?logo=discord\u0026logoColor=white\u0026style=for-the-badge)](https://discord.gg/mJQm8SJ)\n\n![](https://raw.githubusercontent.com/Wellenline/auddly/dev/preview.png)\n\n\n## Getting Started\nAuddly has built docker images. You can use docker compose to run all the required services.\n\n## Using Docker-Compose\n```docker\nversion: \"3\"\nservices:\n  app:\n    container_name: auddly-server\n    restart: always\n    build: \n      context: https://github.com/Wellenline/auddly-server.git\n    environment:\n      - MONGO_URL=mongodb://auddly:SUPER_SECRET_PASSWORD@mongodb/auddly?authSource=admin\n      - MUSIC_PATH=/music\n      - CACHE_PATH=/cache\n      - SPOTIFY_ID= # YOUR SPOTIFY ID\n      - SPOTIFY_SECRET= # YOUR SPOTIFY SECRET\n      - LAST_FM_API_KEY=YOUR_LAST_FM_CREDENTIALS\n      - LAST_FM_API_SECRET=YOUR_LAST_FM_CREDENTIALS\n      - LAST_FM_USERNAME=YOUR_LAST_FM_CREDENTIALS\n      - LAST_FM_PASSWORD=YOUR_LAST_FM_CREDENTIALS\n      - PORT=5000\n      - HOST=http://127.0.0.1:5000\n\t  - ADMIN_EMAIL=YOUR_ADMIN_EMAIL\n\t  - ADMIN_PASSWORD=YOUR_ADMIN_PASSWORD\n\t  - JWT_SECRET=YOUR_JWT_SECRET\n    volumes:\n      - ./CHANGE_THIS_TO_YOUR_MUSIC_PATH:/music # Mount your music inside docker\n      - ./cache:/cache # Cache to store album art and transcoded audio\n    ports:\n      - 5000:5000\n    links:\n      - mongodb\n    depends_on:\n      - mongodb\n  mongodb:\n    image: mongo:latest\n    container_name: \"auddly-mongo\"\n    environment:\n      - MONGO_DATA_DIR=/data\n      - MONGO_LOG_DIR=/dev/null\n      - MONGO_INITDB_ROOT_USERNAME=auddly\n      - MONGO_INITDB_ROOT_PASSWORD=SUPER_SECRET_PASSWORD # Replace this\n    volumes:\n      - ./data/mongo:/data\n    ports:\n      - 27018:27017\n    command: mongod --auth --logpath=/dev/null\n```\n\n```sh\ndocker-compose up -d\n```\n\n\n## Building From Source\n\nYou'll need [NPM](https://www.npmjs.com/get-npm) and [MongoDB](https://docs.mongodb.com/manual/administration/install-community/) installed before continuing.\n\nClone the repo:\n```sh\ngit clone https://github.com/wellenline/auddly-server.git\ncd auddly-server\n```\n\nInitialize the build using NPM:\n```sh\nnpm i\nnpm run build\nnpm start\n```\n\nSample .env file:\n```env\nMONGO_URL=YOUR_MONGO_DB\nMUSIC_PATH=PATH_TO_YOUR_MUSIC\nCACHE_PATH=./cache\nSPOTIFY_ID=YOUR_SPOTIFY_ID\nSPOTIFY_SECRET=YOUR_SPOTIFY_SECRET\nLAST_FM_API_KEY=YOUR_LAST_FM_CREDENTIALS\nLAST_FM_API_SECRET=YOUR_LAST_FM_CREDENTIALS\nLAST_FM_USERNAME=YOUR_LAST_FM_CREDENTIALS\nLAST_FM_PASSWORD=YOUR_LAST_FM_CREDENTIALS\nADMIN_EMAIL=YOUR_ADMIN_EMAIL\nADMIN_PASSWORD=YOUR_ADMIN_PASSWORD\nJWT_SECRET=YOUR_JWT_SECRET\nPORT=5000\nHOST=http://127.0.0.1:5000\n```\n\n## Artist Pictures (from Spotify)\nTo display artist pictures you need to sign up for Spotify Developer Account and create a new application\nhttps://developer.spotify.com/dashboard/login\n\n## Artist Bio, similar artists, tags \u0026 scrobble (from Lastfm)\nTo display artist bio, get similar artists, tags and scrobble your music you need to create a new Lastfm application\nhttps://www.last.fm/api/account/create\n\n\n\n## API\n#### System\n|                |Description                    |\n|----------------|-------------------------------|\n|`GET /system/info`|Get music library details|\n\n\n#### Tracks\n|                |Description                    |\n|----------------|-------------------------------|\n|`GET /tracks`|All tracks (query: skip, limit, genre, popular, liked, artist, album)|\n|`GET /tracks/play/:id`|Stream audio|\n|`GET /tracks/like/:id`|Toggle track favourite |\n|`GET /tracks/random`| Get random tracks (query: limit) `new` |\n\n#### Search\n|                |Description                    |\n|----------------|-------------------------------|\n|`GET /search`| Search (query: q) |\n\n\n#### Albums\n|                |Description                    |\n|----------------|-------------------------------|\n|`GET /albums`| Get all albums (query: skip, limit, artist) |\n|`GET /albums/:if`| Get all album |\n|`GET /albums/random`| Get random albums (query: limit) `new` |\n|`GET /albums/art/:id`|Get Album art |\n\n\n#### Artists\n|                |Description                    |\n|----------------|-------------------------------|\n|`GET /artists`| Get all artists (query: skip, limit) |\n|`GET /artists/random`| Get random artists (query: limit) `new` |\n\n\n#### Playlists ()\n|                |Description                    |\n|----------------|-------------------------------|\n|`GET /playlists`| Get all playlists (query: skip, limit) |\n|`POST /playlists`| Create a new playlist `{ name: string, picture?: string }` |\n|`POST /playlists/:id`| Add track to playlist `{ track: number }` |\n|`PUT /playlists/:id`| Update playlist `{ name: string, tracks: [] }` |\n|`DELETE /playlists/:id`| Delete playlist |\n|`DELETE /playlists/:id/:track`| Delete track from playlist |\n\n\n#### Genres\n|                |Description                    |\n|----------------|-------------------------------|\n|`GET /genres`| Get all genres |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWellenline%2Fauddly-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FWellenline%2Fauddly-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWellenline%2Fauddly-server/lists"}