caprover / one-click-apps

Community Maintained One Click Apps (https://github.com/caprover/caprover)
Apache License 2.0
546 stars 534 forks source link

App Suggestion: Navidrome #1118

Open jdkdev opened 3 months ago

jdkdev commented 3 months ago

Please tell us what app you'd like to see on CapRover as a one-click app. Looking for a good music server to replace Spotify. https://www.navidrome.org/ seems like a good fit it can work as a one click app.

Do you know if there is any official Docker image for the app? https://www.navidrome.org/docs/installation/docker/

Thanks!

jdkdev commented 3 months ago

Maybe a start... from AI.

captainVersion: 4
services:
  navidrome:
    dockerfileLines: |
      FROM deluan/navidrome:latest
      USER 1000:1000
      ENV ND_SCANSCHEDULE=1h
      ENV ND_LOGLEVEL=info
      ENV ND_SESSIONTIMEOUT=24h
      ENV ND_BASEURL=
    volumes:
      - $$CAPTAIN_APP_DIR_PATH/data:/data
      - $$CAPTAIN_APP_DIR_PATH/music:/music:ro
    containerHttpPort: 4533
    instanceCount: 1
    deploymentType: 1
    entrypoint: ""
    envVars:
      - id: ND_SCANSCHEDULE
        label: Scan Schedule (ND_SCANSCHEDULE)
        defaultValue: 1h
        description: Interval to scan for new music (e.g., 1h, 30m)
      - id: ND_LOGLEVEL
        label: Log Level (ND_LOGLEVEL)
        defaultValue: info
        description: Log level for Navidrome (trace, debug, info, warn, error, fatal, panic)
      - id: ND_SESSIONTIMEOUT
        label: Session Timeout (ND_SESSIONTIMEOUT)
        defaultValue: 24h
        description: Timeout duration for user sessions (e.g., 24h, 30m)
      - id: ND_BASEURL
        label: Base URL (ND_BASEURL)
        defaultValue: ""
        description: Base URL for Navidrome (e.g., /navidrome)
    volumesExplanation: |
      - /data: Main data directory for Navidrome (e.g., configuration, database)
      - /music: Path to your music folder, mounted read-only
  instructions:
    start: |
      Navidrome is a music server compatible with Subsonic clients. It organizes your music collection and streams it to any client.
    end: |
      Navidrome has been successfully deployed! Access it at http://$$CAPTAIN_APP_NAME.$$CAPTAIN_ROOT_DOMAIN
  displayName: Navidrome
  isOfficial: false
  description: Navidrome is a music server compatible with Subsonic clients, focusing on user experience and ease of use.
  documentation: See https://github.com/deluan/navidrome
jdkdev commented 3 months ago

My failed attempt to make the captain file:

captainVersion: 4
services:
  $$cap_appname:
    image: deluan/navidrome:latest
    ports:
      - '4533:4533'
    environment:
      USER: $$cap_user
      ND_SCANSCHEDULE: $$cap_scanschedule
      ND_LOGLEVEL: $$cap_loglevel
      ND_SESSIONTIMEOUT: $$cap_sessiontimeout
      ND_BASEURL: $$cap_baseurl
    volumes:
      - $$cap_appname-data:/data
      - $$cap_appname-music:/music:ro
caproverOneClickApp:
  variables:
    - id: '$$cap_user'
      label: User
      defaultValue: 1000:1000
      description: User used. (should be owner of volumes)
      validRegex: /[0-9]/
    - id: '$$cap_scanschedule'
      label: Scan Schedule (ND_SCANSCHEDULE)
      defaultValue: 1h
      description: Interval to scan for new music (e.g., 1h, 30m)
    - id: '$$cap_loglevel'
      label: Log Level (ND_LOGLEVEL)
      defaultValue: info
      description: Log level for Navidrome (trace, debug, info, warn, error, fatal, panic)
    - id: '$$cap_sessiontimeout'
      label: Session Timeout (ND_SESSIONTIMEOUT)
      defaultValue: 24h
      description: Timeout duration for user sessions (e.g., 24h, 30m)
    - id: $$cap_baseurl
      label: Base URL
      defaultValue: ""
      description: Base URL for Navidrome (e.g., /navidrome)
instructions:
  start: >
    Navidrome is a music server compatible with Subsonic clients. It
    organizes your music collection and streams it to any client.
  end: >
    Navidrome has been successfully deployed!
displayName: Navidrome
isOfficial: false
description: Navidrome is a music server compatible with Subsonic clients,
  focusing on user experience and ease of use.
documentation: See https://github.com/deluan/navidrome
jdkdev commented 3 months ago

Getting closer:

captainVersion: 4
services:
    $$cap_appname:

        image: deluan/navidrome:$$cap_app_version
        restart: always
        environment:
            ND_BASEURL: https://$$cap_appname.$$cap_root_domain
            ND_SCANSCHEDULE: 1h
            ND_LOGLEVEL: info  
            ND_SESSIONTIMEOUT: 24h
        volumes:
            - $$cap_appname-data:/akaunting-data
            - $$cap_appname-modules:/akaunting-modules
caproverOneClickApp:
    variables:
        - id: $$cap_app_version
          label: Version
          defaultValue: '0.52.5'
          description: https://hub.docker.com/r/deluan/navidrome/tags

    instructions:
        start: >-
            Navidrome is a music server compatible with Subsonic clients. It organizes your music collection and streams it to any client.
        end: >-
            Navidrome has been successfully deployed!
    displayName: 'Navidrome'
    isOfficial: false
    description: Navidrome is a music server compatible with Subsonic clients, focusing on user experience and ease of use.
    documentation: See https://github.com/deluan/navidrome