Skip to content

kaythomas0/noisedash

Repository files navigation

Noisedash

Self-hostable web tool for generating ambient noises

Noisedash

(More screenshots on the wiki)

Features

  • Generate and customize ambient noises and user-uploadable samples (leveraging Tone.js)
  • Save "noise profiles" so you can easily switch between your created soundscapes. Import and export them for easy sharing, record them for use elsewhere
  • Fine-tune your noises with audio processing tools like filters, LFOs, and effects
  • Upload and edit audio samples (e.g rain, wind, thunder) to combine with your generated noises. Add effects to them and set playback modes
  • Use admin tools to manage multiple users
  • Mobile friendly

Installation

Docker

Requires docker and docker-compose

  • Download the provided docker-compose.yml file
  • In the same directory as the docker-compose file, created a folder called config, and inside it, put the provided config file. Please reference the configuration section of this README for documentation on config options
  • Edit the config file to your preference
  • Bring the container up:
docker-compose up -d
  • Proceed to the URL where it's deployed and register your first user

(Raspberry Pi compatible images are available, see armv7 images on Docker Hub)

Kubernetes

You can apply the manifest.yaml in the kubernetes folder to install Noisedash into your Kubernetes cluster.

Optionally, uncomment the last lines in the file to also create an ingress. The ingress, commented out by default, needs to have the clusterIssuser annotation set to your cluster issuer (default: letsencrypt-prod) and the ingress class set to your Ingress class (default: Nginx)

$ kubectl apply -f ./kubernetes/manifest.yaml
persistentvolumeclaim/db-pvc created
persistentvolumeclaim/samples-pvc created
deployment.apps/noisedash created
service/noisedash created
configmap/noisedashcfg created
ingress.networking.k8s.io/noisedashingress created

From Source

Requires node 20 and npm

  • Clone the repo:
git clone https://github.com/kaythomas0/noisedash.git
cd noisedash
  • Edit config/default.json to your preference
  • Install required packages and build the app:
npm install
NODE_ENV=production npm run build
  • The build files will be put into a directory called dist
  • Run the server and serve static files:
npm run server-prod
  • Proceed to the URL where it's deployed and register your first user

Configuration

  • listeningPort: The port the noisedash server will listen on. If you modify this, you need to modify your docker file appropriately (if applicable)
  • sessionFileStorePath: The path to the directory where login-session info is saved
  • sampleUploadPath: The path to the directory where user-uploaded samples are saved. If you modify this, you need to modify your docker file appropriately (if applicable)
  • maxSampleSize: The maximum size of a single sample a user can upload (in bytes). 10GB by default
  • logFile: The path to the directory where server logs are saved
  • tls: Set to true to enable the server's built-in tls option. Keep this as false if using an external web server (like nginx)
  • tlsKey: If tls is set to true, this is the path to your tls key
  • tlsCert: If tls is set to true, this is the path to your tls cert
  • disableSecurity: Do not set to true for public facing instances. Changes the behavior of this app to remove all login/authentication/security options. If this is set to true, you will immediately be taken to the home page on page load. No logins, no managing multiple users, etc. This could be suitable for you if you're not exposing your instance publically and you only plan on having one user

Note: production.json exists in the source code and is left empty intentionally for the reason outlined here: https://github.com/node-config/node-config/wiki/Strict-Mode#node_env-value-of-node_env-did-not-match-any-deployment-config-file-names=

Contributing

See CONTRIBUTING.md

License

Noisedash, a self-hostable web tool for generating ambient noises 
Copyright (C) 2021  Kay Thomas <[email protected]>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

About

Self-hostable web tool for generating ambient noises

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

  •  

Contributors

Languages