Each user gets a unique secret token embedded in their webhook URL (/webhook/:token). Credentials are loaded from users.json at startup instead of environment variables, making it easy to add or remove users without redeploying. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
1.3 KiB
1.3 KiB
AudioPen Nextcloud Webhook
A small Node.js webhook service that receives notes from AudioPen and uploads them to a folder in Nextcloud using WebDAV. Supports multiple users, each with their own Nextcloud credentials and a unique webhook token.
When AudioPen sends a webhook request, the service:
- Validates the token in the URL
- Receives the note content
- Creates a timestamped Markdown file
- Uploads the file to the configured Nextcloud folder
Example filename:
2026-05-19T22-15-10.123Z-my-note-title.md
Setup
1. Configure users
Copy users.json.example to users.json and fill in credentials for each user:
{
"abc123secrettoken": {
"nextcloudUrl": "https://nextcloud.example.com",
"username": "alice",
"password": "alice-app-password",
"folder": "AudioPen"
}
}
Each key is a secret token that identifies a user. Generate one with:
node -e "console.log(crypto.randomUUID())"
2. Configure the server
Optionally create a .env file to set the port or a custom path to users.json:
PORT=3000
USERS_FILE=users.json
3. Run
npm install
node server.js
4. Configure AudioPen
In AudioPen's webhook settings, set the URL to:
https://your-server/webhook/<token>
Each user gets their own URL containing their unique token.