Docker-finance | modern accounting for the power-user

Hello wonderful PTA community!

Announcing the first beta release of docker-finance: powered by hledger, hledger-flow and more.

From the “Overview”:

docker-finance empowers you with a privacy-focused, highly uniform system of financial management - but with a modern twist.

Cryptocurrencies and blockchain metadata are unified with your legacy finances to create a world of best-practice accounting in a highly flexible, time-tested environment.

You can find highlights, screenshots and more in the link above.


In terms of accounting, docker-finance strives to find the fine line between personal preference and best-practice; aiming to unify the two into an ideal setting. And, as with any beta release, your eyes are needed and greatly appreciated!

Bounties are available to those who are interested as well as the option to be paid in a cryptocurrency of your choice (high cap/very liquid). If interested, please reach out through the contact section of the README.

Thank you, and a big thanks to Simon and the team for this new forum (very grateful for the decentralization)!

1 Like

NEW PRE-RELEASE:

v1.0.0-beta.2 - 2024-07-30

Features and fixes are detailed in the CHANGELOG.

NEW PRE-RELEASE:

v1.0.0-beta.3 - 2024-08-20

Features and fixes are detailed in the CHANGELOG.

TL;DR features for v1.0.0-beta.2 include:

  • New build options
  • New version command
  • Custom Dockerfile support
    • Allows you to customize your instance without upstream interference
  • hledger --conf support
  • Add support for multiple crypto aggregator-APIs (for fetching prices)
  • Add more price and hledger-flow account support
  • Add Coinbase SIWC API (V2) compliance

And more, as detailed in CHANGELOG.

1 Like

TL;DR features for v1.0.0-beta.3 include:

  • Add bash completion
    • Tab your way through client/container commands
  • Add plugins support
    • New plugins command
    • documentation, example plugins
    • proxychains-ng / Tor plugin
    • timewarrior to hledger timeclock plugin
  • New times command

And more, as detailed in CHANGELOG.


Tor plugin example:

# Bring up docker-finance container
username@host ~ $ dfi 'archlinux/${USER}:default' up
...

# Hop back onto client (host) in another terminal and start the Tor plugin
username@host ~ $ dfi 'archlinux/${USER}:default' plugins repo/tor.bash start
[INFO] docker-finance_tor: container started
[INFO] docker-finance_tor: container IP '172.31.1.3'
[WARN] docker-finance_tor: waiting for Tor installation
[INFO] docker-finance_tor: Tor installation ready
[INFO] docker-finance_tor: updating /etc/tor/torrc
[INFO] docker-finance_tor: restarting Tor with updated /etc/tor/torrc
[INFO] docker-finance_archlinux_username_default: updating /etc/proxychains.conf
[WARN] docker-finance_archlinux_username_default: testing connection (bootstrapping ~15s)
Congratulations. This browser is configured to use Tor.
185.220.101.159

# Jump back into the container, fetch over Tor
username@docker-finance:e02570ea4507 ~ $ dfi testprofile/testuser fetch account=metamask chain=ethereum,polygon tor=on
...

# Import
username@docker-finance:e02570ea4507 ~ $ dfi testprofile/testuser import
...

# Show account balance
username@docker-finance:e02570ea4507 ~ $ dfi testprofile/testuser hledger bal assets:metamask liabilities:metamask cur:"ETH|MATIC"
0.005730979499673140 ETH  assets:metamask:laptop:wallet-1:ethereum:ETH
0.537249894761092900 MATIC  assets:metamask:laptop:wallet-2:polygon:MATIC
0.001014479083600833 ETH  assets:metamask:phone:wallet-1:ethereum:ETH
--------------------
  0.006745458583273973 ETH
0.537249894761092900 MATIC

# Show account balance (USD value)
username@docker-finance:e02570ea4507 ~ $ dfi testprofile/testuser hledger bal assets:metamask liabilities:metamask cur:"ETH|MATIC" --value=now
         15.11306846  assets:metamask:laptop:wallet-1:ethereum:ETH
          0.23096778  assets:metamask:laptop:wallet-2:polygon:MATIC
          2.67526552  assets:metamask:phone:wallet-1:ethereum:ETH
--------------------
         18.01930176

timewarrior to timeclock plugin example:

# Bring up docker-finance container
username@host ~ $ dfi 'archlinux/${USER}:default' up
...

# Track some time with Alice
username@docker-finance:c790b537bb8b ~ $ dfi clients/alice times start desc="Call with Alice" comment="Discussion on business strategy" tag:type=consulting
...
username@docker-finance:c790b537bb8b ~ $ dfi clients/alice times stop
...

# Then track some time with Bob
username@docker-finance:c790b537bb8b ~ $ dfi clients/bob times start desc="Generate reports" comment="CeFi full reports only" tag:type=bookkeeping
...
username@docker-finance:c790b537bb8b ~ $ dfi clients/bob times stop
...

# Looks like Alice needs more time
username@docker-finance:c790b537bb8b ~ $ dfi clients/alice times start desc="Send email to Alice" comment="Returning her questions on strategy" tag:type=consulting
...
username@docker-finance:c790b537bb8b ~ $ dfi clients/alice times stop
...

# Let's get a summary of just Alice
username@docker-finance:c790b537bb8b ~ $ dfi clients/alice times summary

Wk  Date       Day Tags                                                                                 Start      End    Time   Total
W34 2024-08-20 Tue comment=Discussion on business strategy, desc=Call with Alice,                    19:09:13 19:11:31 0:02:18
                   profile=clients/alice, tag:type=consulting
                   comment=Returning her questions on strategy, desc=Send email to Alice,            19:14:01 19:15:32 0:01:31 0:03:49
                   profile=clients/alice, tag:type=consulting

                                                                                                                               0:03:49


# Then convert Alice's time to hledger's timeclock format
username@docker-finance:c790b537bb8b ~ $ dfi clients/alice plugins repo/timew_to_timeclock.bash | tee t.timeclock
i 2024-08-21 02:09:13 clients/alice  Call with Alice ; Discussion on business strategy, id:6, type:consulting
o 2024-08-21 02:11:31
i 2024-08-21 02:14:01 clients/alice  Send email to Alice ; Returning her questions on strategy, id:2, type:consulting
o 2024-08-21 02:15:32

# Print timeclock with hledger
username@docker-finance:c790b537bb8b ~ $ hledger -f t.timeclock print
2024-08-21 * Call with Alice  ; Discussion on business strategy, id:6, type:consulting
    (clients/alice)           0.04h

2024-08-21 * Send email to Alice  ; Returning her questions on strategy, id:2, type:consulting
    (clients/alice)           0.03h