[WIP] Add persistent settings.json for Etherpad#2
Merged
Conversation
There was a problem hiding this comment.
Copilot wasn't able to review any files in this pull request.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Copilot stopped work on behalf of
saurabh-khanna due to an error
March 1, 2026 15:12
saurabh-khanna
added a commit
that referenced
this pull request
Mar 1, 2026
Add settings.json and Dockerfile COPY — implement missing PR #2 changes
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
settings.jsonwith Etherpad configurationDockerfileto copysettings.jsoninto the imageOriginal prompt
Overview
Update the
invisibleinfo/notesrepository to add a persistentsettings.jsonfor Etherpad and update theDockerfileto copy it into the image, so settings survive redeployments via Appliku.Changes Required
1. Create
settings.jsonin the repo rootCreate a new file
settings.jsonwith the following exact content:{ "title": "Invisible Notes", "showRecentPads": true, "favicon": null, "skinName": "colibris", "skinVariants": "super-light-toolbar super-light-editor light-background", "ip": "0.0.0.0", "port": 9001, "showSettingsInAdminPage": true, "enableMetrics": true, "cleanup": { "enabled": false, "keepRevisions": 5 }, "authenticationMethod": "password", "enableDarkMode": true, "updateServer": "https://etherpad.org/ep_infos", "dbType": "${DB_TYPE:dirty}", "dbSettings": { "host": "${DB_HOST:undefined}", "port": "${DB_PORT:undefined}", "database": "${DB_NAME:undefined}", "user": "${DB_USER:undefined}", "password": "${DB_PASS:undefined}", "charset": "${DB_CHARSET:undefined}", "filename": "${DB_FILENAME:var/dirty.db}", "collection": "${DB_COLLECTION:undefined}", "url": "${DB_URL:undefined}" }, "defaultPadText": "Meeting Notes\n\nDate: \nAttendees: \nAgenda:\n- \n\nNotes:\n\nAction Items:\n- \n", "padOptions": { "noColors": false, "showControls": true, "showChat": true, "showLineNumbers": false, "useMonospaceFont": false, "userName": null, "userColor": null, "rtl": false, "alwaysShowChat": true, "chatAndUsers": true, "lang": "en" }, "padShortcutEnabled": { "altF9": true, "altC": true, "cmdShift2": true, "delete": true, "return": true, "esc": true, "cmdS": true, "tab": true, "cmdZ": true, "cmdY": true, "cmdI": true, "cmdB": true, "cmdU": true, "cmd5": true, "cmdShiftL": true, "cmdShiftN": true, "cmdShift1": true, "cmdShiftC": true, "cmdH": true, "ctrlHome": true, "pageUp": true, "pageDown": true }, "suppressErrorsInPadText": false, "requireSession": false, "editOnly": false, "minify": true, "maxAge": 21600, "abiword": null, "soffice": null, "allowUnknownFileEnds": true, "requireAuthentication": false, "requireAuthorization": false, "trustProxy": true, "cookie": { "keyRotationInterval": 86400000, "sameSite": "Lax", "sessionLifetime": 864000000, "sessionRefreshInterval": 86400000 }, "disableIPlogging": true, "automaticReconnectionTimeout": 0, "scrollWhenFocusLineIsOutOfViewport": { "percentage": { "editionAboveViewport": 0, "editionBelowViewport": 0 }, "duration": 0, "scrollWhenCaretIsInTheLastLineOfViewport": false, "percentageToScrollWhenUserPressesArrowUp": 0 }, "users": { "admin": { "password": "${ADMIN_PASSWORD:null}", "is_admin": true }, "user": { "password": "${USER_PASSWORD:null}", "is_admin": false } }, "socketTransportProtocols": ["websocket", "polling"], "socketIo": { "maxHttpBufferSize": 50000 }, "loadTest": false, "dumpOnUncleanExit": false, "importExportRateLimiting": { "windowMs": 90000, "max": 10 }, "importMaxFileSize": 52428800, "commitRateLimiting": { "duration": 1, "points": 10 }, "exposeVersion": false, "loglevel": "INFO", "customLocaleStrings": {}, "enableAdminUITests": false, "lowerCasePadIds": true, "sso": { "issuer": "${SSO_ISSUER:http://localhost:9001}", "clients": [ { "client_id": "${ADMIN_CLIENT:admin_client}", "client_secret": "${ADMIN_SECRET:admin}", "grant_types": ["authorization_code"], "response_types": ["code"], "redirect_uris": ["${ADMIN_REDIRECT:http://localhost:9001/admin/}"] }, { "client_id": "${USER_CLIENT:user_client}", "client_secret": "${USER_SECRET:user}", "grant_types": ["authorization_code"], "response_types": ["code"], "redirect_uris": ["${USER_REDIRECT:http://localhost:9001/}"] } ] } }2. Update
DockerfileThe current
Dockerfilecontains only:FROM etherpad/etherpad:2.6.1Update it to also copy the
settings.jsoninto the image so it persists across Appliku redeployments:Why These Changes
settings.jsonis currently baked into the Docker image from the baseetherpad/etherpadimage. Any edits made via the Admin UI get overwritten on every redeploy.settings.jsonto the repo and copying it in theDockerfile, the settings persist permanently across all future deployments.This pull request was created from Copilot chat.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.