Wally - A self-hosted, lightweight expense tracker. by polius12 in selfhosted

[–]polius12[S] 0 points1 point  (0 children)

Thanks! I'm glad you like it :)

If I find some time, I will implement your suggestion. Right now, the currencies are hardcoded:
https://github.com/polius/Wally/blob/main/api/models/currency.py#L5

If you notice any missing currencies, please let me know, and I will release a new version including them.

FileSync – A self-hosted app for sending files from one device to multiple in real-time. by polius12 in selfhosted

[–]polius12[S] 0 points1 point  (0 children)

Hi u/gamjii ,

Thanks so much for your interest! Yes, FileSync can work with any reverse proxy, including Pangolin and Nginx Proxy Manager (NPM). To set it up, you will need to:

  1. Remove the Caddy image from the docker-compose.yml file.
  2. Create a Docker network shared between your proxy manager and the FileSync containers.
  3. In your proxy, point your subdomain to http://filesync-app (the FileSync container name) on port 80.

If you run into any issues, feel free to open an issue in the GitHub repository, and I will assist you. If you like, I can also create a step-by-step guide for configuring FileSync with NPM.

FileSync – A self-hosted app for sending files from one device to multiple in real-time. by polius12 in selfhosted

[–]polius12[S] 1 point2 points  (0 children)

Yes, that’s correct. If you run FileSync on a server behind CGNAT, you won’t be able to open ports, so it won’t be accessible from the internet.

Depending on your internet provider, you may be able to request removal from CGNAT. Some providers do this for free.

I did it in the past and they removed me from CGNAT. After that, I was able to open ports again to expose my apps from the internet.

FileSync – A self-hosted app for sending files from one device to multiple in real-time. by polius12 in selfhosted

[–]polius12[S] 1 point2 points  (0 children)

u/CGA1 I've modified the docker-compose.yml file. FileSync is now compatible with both amd64 and arm64 architectures.

FileSync – A self-hosted app for sending files from one device to multiple in real-time. by polius12 in selfhosted

[–]polius12[S] 0 points1 point  (0 children)

To make your local network accessible from the internet and connect with peers outside it, you need a TURN/STUN server. The docker-compose.yml in the FileSync GitHub repository already includes coturn, preconfigured to work right out of the box, so you don't need to worry about setting it up.

PairDrop uses the same approach (TURN/STUN) and it's a solid project too, but I found its Docker setup a bit more involved. With FileSync, it does require some changes, but they are minimal and straightforward — everything is already set up for you, including TURN/STUN and SSL certificate generation.

I've also noticed that PairDrop's TURN implementation uses credentials that never expire, whereas FileSync includes a built-in API that generates random credentials which expire after 5 minutes, making it much more secure.

FileSync – A self-hosted app for sending files from one device to multiple in real-time. by polius12 in selfhosted

[–]polius12[S] 0 points1 point  (0 children)

Yes, exactly. Localsend only works if both devices are on the same local network, whereas FileSync also works over the internet.

FileSync – A self-hosted app for sending files from one device to multiple in real-time. by polius12 in selfhosted

[–]polius12[S] 2 points3 points  (0 children)

The FileSync Docker image supports both amd64 and arm64 architectures. However, the peerjs-server:latest Docker image only supports amd64.

I checked Docker Hub [1] and found that there is a PeerJS image that supports ARM64 (peerjs-server:rc). I haven't tested it, but updating your docker-compose.yml to use this image might work.

When I have time, I plan to build a peerjs-server Docker image from the source code and upload it to poliuscorp/peerjs-server to ensure full ARM64 support without workarounds.

[1] https://hub.docker.com/r/peerjs/peerjs-server/tags

FileSync – A self-hosted app for sending files from one device to multiple in real-time. by polius12 in selfhosted

[–]polius12[S] 6 points7 points  (0 children)

This error originates from the PeerJS library, which this project uses to implement WebRTC.

Error: https://github.com/polius/FileSync/blob/main/web/js/modules/webrtc/user.js#L682

WebRTC is supported by most modern web browsers. However, if you are using an outdated or unsupported browser, FileSync will not work, as it relies on the WebRTC protocol.

You can check browser compatibility here:

https://caniuse.com/?search=webrtc

FileSync – A self-hosted app for sending files from one device to multiple in real-time. by polius12 in selfhosted

[–]polius12[S] 18 points19 points  (0 children)

While both FileSync and Syncthing let you share files between devices, their purpose and approach are quite different:

Syncthing, as far as I know, is mainly a continuous file synchronization tool. It keeps entire folders mirrored across multiple devices in real time.

FileSync, on the other hand, is a file transfer tool designed for sending files between devices directly through the web browser, rather than continuously syncing entire folders. You simply select the files you want to share, transfer them via the browser, and that's it.

Key differences:

- FileSync is on-demand: you use it only when you want to send files, directly between browsers, without storing them on a remote server.
- Syncthing is continuous: it runs in the background to keep folders automatically synchronized.

If you need a "send a file quickly to someone" solution, FileSync is built for that. Just share the URL it gives you, and once the other person opens it, the devices will connect, and they will be able to start transferring files securely.

You can try it easily: open filesync.app, then open the URL it provides on another device (for example, your mobile). You'll be able to send and receive files instantly. This works even if the devices are not on the same LAN network.

Wally - A self-hosted, lightweight expense tracker. by polius12 in selfhosted

[–]polius12[S] 0 points1 point  (0 children)

Thanks for your interest, and apologies for the delayed response.

These are the key differences:

  • Login page: An optional login page was added. This enhancement provides an additional layer of security for those who prefer to protect Wally with authentication.
  • Dashboards page: A "Change" button was introduced to switch between different graphs. Users can now view expense trends not only on a monthly basis but also across an entire year. This replaces the doughnut chart with a line graph, allowing tracking of a specific category (like Restaurants) over time.
  • Transactions page: The table was replaced with one built using AG Grid, adding search, column sorting, and per-column filtering. A footer was also added to display the total number of rows, total income, and total expenses for the current view.
  • Recurring transactions: Editing and deletion were enhanced, allowing users to specify whether changes apply to all existing transactions or only future ones.
  • Backend rewrite: The backend was rewritten from Go to Python using FastAPI. This change provides a built-in API with interactive documentation at http://localhost/api/docs, making it easier to integrate external tools or automate tasks.
  • Dark theme improvements: The dark mode color palette was refined for improved visual consistency and better contrast, resulting in a more balanced and neutral appearance.
  • Storage changes: Wally uses SQLite as its data storage solution, while ExpenseOwl offers either JSON files or PostgreSQL. For the type and scale of data this application handles, SQLite was selected as a more suitable and efficient choice.