this post was submitted on 15 Nov 2023
2 points (100.0% liked)

Self-Hosted Main

21 readers
1 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

For Example

We welcome posts that include suggestions for good self-hosted alternatives to popular online services, how they are better, or how they give back control of your data. Also include hints and tips for less technical readers.

Useful Lists

founded 1 year ago
MODERATORS
 

I think this is a pretty niche demand and probably another topic for r/DataHoarder but anyway, here I am.

I created this application to basically have a way to store my WhatsApp messages away from the Google/Meta servers. Or at least not depend so much on Google backup.

Whatsapp has a very limited export functionality, which any user can use through the app's own interface. Once these messages and media have been exported, you can place them in a folder monitored by ChatVault, send them to an email monitored by ChatVault or upload them via the interface. Once ingested by chatvault, it will record the chat media on disk and save the messages in a database in a structured way. These messages can be accessed in a front end similar to a chat application.

It's still under development, some things need to be improved (mainly the UI), it's still far from ideal, it's true, the way Whatsapp allows us to export messages is quite bad, which makes the entire process of exporting and ingesting it into chatvault quite coupled but it can still be useful for those who want to store their messages independently, just like I wanted.

https://github.com/vitormarcal/chatvault

Edit: add an application interface image

The UI still needs some work, but it serves the purpose

top 15 comments
sorted by: hot top controversial new old
[–] SnooPets20@alien.top 1 points 11 months ago (1 children)

I have a WhatsApp backup zip file. This won't work, right? Since I think it's encrypted.

[–] NeoJackOfBlades@alien.top 1 points 11 months ago

For now, the application cannot deal with the physical base of WhatsApp, the application can import based on the txt of messages and media that WhatsApp generates when exported through the application interface

[–] AKDub1@alien.top 1 points 11 months ago

This is great! I will definitely try this out when I get the chance and follow development.

For the last year or so I had been thinking of a similar thing and planning to write a post on r/datahoarder about it, but decided not to because as someone who knows nothing about software development I would be basically just asking people to create an app I want for free.

Here are some random thoughts I had had for that app:

Import from multiple sources WhatsApp/Signal/Telegram/etc - either from databases,backups, exports, or just parsing text files for if you are able to compose a chat history in any other way. Optional chat merge - merge chats from different sources into a single chat history instead of into a separate chat isothere
Address book/Contact - so that you can manage things clearly when merging

[–] kon_dev@alien.top 1 points 11 months ago

If anyone searches for a comparable alternative for Signal, I can recommend https://github.com/bepaald/signalbackup-tools. You can export a backup in Signal Android and decrypt it and export HTML with that cli. It even offers search via Javascript.

[–] harriershmarrier@alien.top 1 points 11 months ago (2 children)

How does the importing work? I have a whatsapp folder containing logs.zip, Databases, Backups, Media. I put the whole folder into the import folder of chatvault but execute disk import does not seem to do anything

[–] ovizii@alien.top 1 points 11 months ago

I'm also looking forward to a new way to import as like you, I manually backup the complete WA folder from my phone and thus have never lost any messages as well as been reliant on the Google Drive backups.

[–] NeoJackOfBlades@alien.top 1 points 11 months ago

For now, you enter the Whatsapp interface, go to export chat, choose whether you want to send it by email or on disk. With these files you can configure import via email, import through the interface with the zip file or place them in a specific folder, so that you can trigger the disk scan through the chatvault interface.

[–] keixver@alien.top 1 points 11 months ago

Awesome work!

[–] f0rc3u2@alien.top 1 points 11 months ago

Looks very promising! Thanks :)

[–] siddharthal@alien.top 1 points 11 months ago (1 children)

Couldn't get it to work. Tried running it in docker. Getting this error

:: Spring Boot :: (v3.1.2) 2023-11-15T17:10:53.882Z INFO 1


[ main] dev.marcal.chatvault.Boot$Companion : Starting Boot.Companion v0.0.1-SNAPSHOT using Java 17.0.9 with PID 1 (/app/chatvault.jar started by root in /app) 2023-11-15T17:10:53.976Z INFO 1


[ main] dev.marcal.chatvault.Boot$Companion : No active profile set, falling back to 1 default profile: "default" [Too many errors, abort]

[–] NeoJackOfBlades@alien.top 1 points 11 months ago (1 children)

I just cleared all images and containers to make sure I wasn't working with any cache and that everything went fine.

This message is expected because we are not defining any profiles: No active profile set, falling back to 1 default profile: "default".

Then I would have to see what error happened after that. The only properties required are the database connection properties.That being said, you can run compose.yml in the project root.It will build an image locally.Or replace the build: ./ line with the image: ghcr.io/vitormarcal/chatvault:latest

docker-compose -f compose.yml

I tested these two ways here and they continue to work. Have you added database information?

[–] siddharthal@alien.top 1 points 11 months ago (1 children)

I tried with this setup only. This was my docker setup.

chatvault: image: ghcr.io/vitormarcal/chatvault:latest restart: unless-stopped environment: - SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/chatvault - SPRING_DATASOURCE_USERNAME=${POSTGRES_USER} - SPRING_DATASOURCE_PASSWORD=${POSTGRES_PASSWORD} ports: - 8106:8080 volumes: - '~/chatvault:/opt/chatvault' - '~/chatvault/config:/config' depends_on: - postgres

[–] NeoJackOfBlades@alien.top 1 points 11 months ago (1 children)

I'm sorry about that, is your Operating System Unix or Windows? x86 or arm? I tested it on Ubuntu server and fedora and it is correct, I will test it on Windows soon. I'm trying to imagine what it could still be.

[–] siddharthal@alien.top 1 points 11 months ago
[–] ThaCrrAaZyyYo0ne1@alien.top 1 points 11 months ago

Awesome project!

Sorry for the noob question but how do I export the chat? I mean, when I hit export chat button it only gives me option to send it via email (and them attaches a .txt and the .jpgs - not a zip file) or share it with telegram, no option to save in disk.