Encrypted Diary Web-App
DailyTxT is an encrypted Diary Web-App to write down your stories of the day and to find them again easily. It is written in Python Flask (Backend) and Vue.JS (Frontend) and meant to be run by Docker - supports AMD64 and ARM64.
You should definitely take a quick look at How to Use to see all the hidden features.
New features will now be added only rarely. However, the support remains and in a few years there will most likely be a completely rewritten version (including upgrade support).
💬 Please simply open a new issue if you have any information, problem, new feature idea, new translation or anything else! I usually reply quickly and the project will have long support - especially security support - (unless marked as deprecated) as I use it regularly myself.
⚠️ Please note when submitting ideas: The basic text-layout will not be changed -> Only one plain text will be saved for each day, to keep things simple!
How to Use
There are two cool Shortcuts you should know:
Note on backup & restore:
You can only reimport/restore all data at once, that was exported before, it's not selective! The restored data is then the most recent data for each day and any previous data for that day was moved to the day's history.
Simply use the docker-compose.yml file from the repo. Adapt it to your needs and run
docker-compose up -dMore detailed Installation
DailyTxT is intended to be run by Docker. There is an official docker image.
Use the docker-compose.yml file in this repo and adapt it. You see it here:
services: dailytxt: image: phitux/dailytxt:latest container_name: dailytxt restart: always environment: # That's the internal container-port. You can actually use any portnumber (must match with the one at 'ports') - PORT=8765
- SECRET_KEY=<openssl rand -base64 32> # Set it to False or remove the line completely to disallow registration of new users. - ALLOW_REGISTRATION=True # Use this if you want the json log file to be indented. Makes it easier to compare the files. Otherwise just remove this line! - DATA_INDENT=2 # Set after how many days the JWT token will expire and you have to re-login. Defaults to 30 days if line is ommited. - JWT_EXP_DAYS=60 # Enable/disable a feature of DailyTxT to auto-check maximal once per hour if there's a newer version of DailyTxT available. Defaults to True if line is ommited. - ENABLE_UPDATE_CHECK=True ports: - "127.0.0.1:<host_port>:8765" # perhaps you only want: # "<host_port>:8765" volumes: - "</save/my/dailytxt-files/here/>:/app/data/" # Or perhaps if using on a windows enviroment: # "C:/Users/example/dailytxt/:/app/data"</pre>
There are four important things that you should adapt to your needs:
openssl rand -base64 32in your bash
Then simply run
docker-compose up -d
If you do NOT use docker-compose, then simply run the following equivalent from bash (and see the info above to adapt it to your needs!):
docker run -p 127.0.0.1:<host_port>:8765 -e "PORT=8765" -e "SECRET_KEY=<openssl rand -base64 32>" -e "ALLOW_REGISTRATION=True" -v </save/my/dailytxt-files/here/>:/app/data --name dailytxt -d phitux/dailytxt:latestProxyPass
You will probably proxypass the container via Nginx or Apache2. Here is an example apache-configuration (which of course needs to be slightly adapted):
<VirtualHost *:443> ServerName dailytxt.mydomain.tld
SSLEngine On <MY-CERT-PATHS.........> Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains" Header append X-FRAME-OPTIONS SAMEORIGIN ProxyPreserveHost On ProxyRequests off AllowEncodedSlashes NoDecode ProxyPass / http://localhost:8007/ nocanon ProxyPassReverse / http://localhost:8007/
You can now (Version >= 1.0.4) also run DailyTxT on a subpath.
🎉 From this version on, there is also ARM64-support (tested on Apple M1).
- Bugfix: Dropdown-menus didn't work on Apple Webkit Browsers
- Added Chinese translation -> zh-Hans: Chinese (simplified) 
- Added Button to calendar to bookmark a day (shown in orange)
- Show amount of remaining backup-codes after logging in with one of them
- Now always showing version number in settings and on login
- Search-results get removed when search-field is emptied
- Slightly changed the dailytxt-icon
- Updated several packages
: Thanks to @Nyar2331.0.12
- Updated spanish translation
- Updated several packages
- Bugfix: Search and Export didn't work when a template was existing (sorry for bad testing 🙈)
- Moved Settings to new separate settings-page
- Added Feature to create templates and to insert them with one (well, it's two) clicks
- Safety strengthened: Export only possible with password confirmation
- Minor CSS fixes
- Added new environment variable 'ENABLE_UPDATE_CHECK' (see above)
- Added button to delete ALL data of the selected day
- Changes on the Service Worker (PWA) to get quicker client-update after the server was already updated (will unfortunately only take effekt in the next version after 1.0.9).
- Bugfix of a possible race-condition
- Bugfix: search didn't work in a specific case of an 'empty' log
- Bugfix: Internal server-errors no longer falsely show the message that a 'authentication is required'
Actually a big update!
- Added spanish translation 
- Added possibility to reimport (restore) data, that was exported before!
- Added possibility to create Backup Codes. They work like one-time passwords.
: Thanks to @SmartPhoneLover
- Added image preview for uploaded image-files 
- Bugfix: couldn't save text, when there was not yet any text for this day BUT already an uploaded file.
- Added automatic update-check with notification for new docker versions (this is sort of beta, let's see how well it works...)
: Thanks to @rhld16
Docker image size was drastically reduced by new multi-stage build.
Thank you very much @rhld16!
Now automatically redirects (in most cases) to login-page when the Webtoken expired.
Added possibility to run application on a subpath
Thanks to @rhld16's PR
Added two new environment variables:
- DATA_INDENT 
- JWT_EXP_DAYS (see explanation above)
: Thanks to @bogosj's PR
Minor CSS Updates. Exported Zip now also includes the history texts.
MIT, see the License-File.
Twice a month we will interview people behind open source businesses. We will talk about how they are building a business on top of open source projects.
We'll never share your email with anyone else.