[!IMPORTANT] Since now Ghostfolio ships with official docker compose files, this repository is not needed anymore.
If you really want to run it without cloning the whole ghostfolio repo, you can exec:
mkdir ghostfolio && cd ghostfolio wget https://raw.githubusercontent.com/ghostfolio/ghostfolio/main/.env.example -q -O - | \ sed -e "s/<INSERT_REDIS_PASSWORD>/$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c32)/" | \ sed -e "s/<INSERT_POSTGRES_PASSWORD>/$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c32)/" | \ sed -e "s/<INSERT_RANDOM_STRING>/$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c32)/" | \ sed -e "s/<INSERT_RANDOM_STRING>/$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c32)/" > .env wget https://raw.githubusercontent.com/ghostfolio/ghostfolio/main/docker/docker-compose.yml -q -O - | sed -e 's/\.\.\/\.env/.env/' > docker-compose.yml docker-compose up -d && docker-compose logs -f
this will download the .env file, generate some random passwords, patch the docker-compose.yml file to use the local .env created with the previous command, and up ghostfolio.
Enjoy, and thanks for all the fish!
All-in-one ghostfolio setup in a docker environment
Ghostfolio is an open source wealth management software built with web technology. The application empowers busy people to keep track of their wealth like stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions.
Imho it is a very nice and promising project, and deserves to be looked upon.
While Ghostfolio setup is quite straighforward and well documented, it has different drawbacks for someone - like me - that wants to really selfhost it in a docker headless environment.
The official setup
Since I'm quite a pain in the a** when I'm required to run things manually, I wanted to make everything run in a single docker stack using docker-compose. So yes, you need docker-compose installed.
This repository contains just scripts and configuration files, if you look inside everything is quite self-explanatory.
Some notes about my choices, in case you were wondering:
You can set it up following these steps:
git clone
this repo in a folder of your choice inside your docker host.```vb rancher@burmilla:/mnt/containers$ git clone https://github.com/psychowood/ghostfolio-docker Cloning into 'ghostfolio-docker'... remote: Enumerating objects: 24, done. remote: Counting objects: 100% (24/24), done. remote: Compressing objects: 100% (16/16), done. remote: Total 24 (delta 2), reused 23 (delta 1), pack-reused 0 Unpacking objects: 100% (24/24), done. rancher@burmilla:/mnt/containers$ cd ghostfolio-docker rancher@burmilla:/mnt/containers/ghostfolio-docker$ ll total 76 drwxr-xr-x 1 rancher rancher 242 Oct 2 09:53 . drwxr-xr-x 1 rancher rancher 882 Sep 27 17:05 .. -rw-r--r-- 1 rancher rancher 1544 Oct 2 09:53 docker-compose.yml -rw-r--r-- 1 rancher rancher 613 Oct 2 09:53 Dockerfile -rw-r--r-- 1 rancher rancher 352 Oct 2 09:53 .env drwxr-xr-x 1 rancher rancher 158 Oct 2 09:54 .git -rw-r--r-- 1 rancher rancher 66 Oct 2 09:53 .gitattributes -rw-r--r-- 1 rancher rancher 58 Oct 2 09:53 .gitignore -rw-r--r-- 1 rancher rancher 34503 Oct 2 09:53 LICENSE drwxr-xr-x 1 rancher rancher 20 Oct 2 09:53 postgres-data -rw-r--r-- 1 rancher rancher 73 Oct 2 09:53 README.md drwxr-xr-x 1 rancher rancher 20 Oct 2 09:53 redis-data drwxr-xr-x 1 rancher rancher 128 Oct 2 09:53 scripts ```
docker build -t ghostfolio-base .
inside the repo directorydocker-compose run --rm base /scripts/install.sh
.docker-compose up -d postgres && docker-compose run --rm base /scripts/setup-database.sh && docker-compose stop postgres
.docker-compose up -d
and, after a good while, you'll be able to reach ghostfolio app @ http://yourdockerhost:4200 .
If you want to monitor the startup sequence you can run docker-compose logs -f
```vb
rancher@burmilla:/mnt/containers/ghostfolio-docker$ docker-compose logs -f
Attaching to ghostfolio_client_1, ghostfolio_server_1, ghostfolio_base_1, ghostfolio_redis_1, ghostfolio_postgres_1
redis_1 | 1:C 06 Oct 2021 18:00:45.253 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis_1 | 1:C 06 Oct 2021 18:00:45.254 # Redis version=6.2.5, bits=64, commit=00000000, modified=0, pid=1, just started
redis_1 | 1:C 06 Oct 2021 18:00:45.254 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis_1 | 1:M 06 Oct 2021 18:00:45.255 * monotonic clock: POSIX clock_gettime
redis_1 | 1:M 06 Oct 2021 18:00:45.256 * Running mode=standalone, port=6379.
redis_1 | 1:M 06 Oct 2021 18:00:45.257 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
redis_1 | 1:M 06 Oct 2021 18:00:45.257 # Server initialized
redis_1 | 1:M 06 Oct 2021 18:00:45.258 * Ready to accept connections
postgres_1 | The files belonging to this database system will be owned by user "postgres".
postgres_1 | This user must also own the server process.
postgres_1 |
postgres_1 | The database cluster will be initialized with locale "en_US.utf8".
postgres_1 | The default database encoding has accordingly been set to "UTF8".
postgres_1 | The default text search configuration will be set to "english".
postgres_1 |
postgres_1 | Data page checksums are disabled.
postgres_1 |
postgres_1 | fixing permissions on existing directory /var/lib/postgresql/data ... ok
postgres_1 | creating subdirectories ... ok
postgres_1 | selecting dynamic shared memory implementation ... posix
postgres_1 | selecting default max_connections ... 100
postgres_1 | selecting default shared_buffers ... 128MB
postgres_1 | selecting default time zone ... Etc/UTC
postgres_1 | creating configuration files ... ok
postgres_1 | running bootstrap script ... ok
postgres_1 | performing post-bootstrap initialization ... ok
postgres_1 | syncing data to disk ... ok
postgres_1 |
postgres_1 | initdb: warning: enabling "trust" authentication for local connections
postgres_1 | You can change this by editing pg_hba.conf or using the option -A, or
postgres_1 | --auth-local and --auth-host, the next time you run initdb.
postgres_1 |
postgres_1 | Success. You can now start the database server using:
postgres_1 |
postgres_1 | pg_ctl -D /var/lib/postgresql/data -l logfile start
postgres_1 |
postgres_1 | waiting for server to start....2021-10-05 22:34:18.615 UTC [46] LOG: starting PostgreSQL 12.8 (Debian 12.8-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
postgres_1 | 2021-10-05 22:34:18.944 UTC [46] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres_1 | .....2021-10-05 22:34:23.639 UTC [47] LOG: database system was shut down at 2021-10-05 22:32:58 UTC
postgres_1 | .......2021-10-05 22:34:30.970 UTC [46] LOG: database system is ready to accept connections
postgres_1 | done
postgres_1 | server started
postgres_1 | CREATE DATABASE
postgres_1 |
postgres_1 |
postgres_1 | /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
postgres_1 |
postgres_1 | 2021-10-05 22:35:46.169 UTC [46] LOG: received fast shutdown request
postgres_1 | waiting for server to shut down....2021-10-05 22:35:46.309 UTC [46] LOG: aborting any active transactions
postgres_1 | 2021-10-05 22:35:46.312 UTC [46] LOG: background worker "logical replication launcher" (PID 53) exited with exit code 1
postgres_1 | 2021-10-05 22:35:46.314 UTC [48] LOG: shutting down
postgres_1 | .....2021-10-05 22:35:52.053 UTC [46] LOG: database system is shut down
postgres_1 | done
postgres_1 | 2021-10-05 22:35:52.286 UTC [1] LOG: starting PostgreSQL 12.8 (Debian 12.8-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
postgres_1 | 2021-10-05 22:35:52.286 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
postgres_1 | 2021-10-05 22:35:52.286 UTC [1] LOG: listening on IPv6 address "::", port 5432
postgres_1 | server stopped
postgres_1 |
postgres_1 | PostgreSQL init process complete; ready for start up.
postgres_1 |
postgres_1 | 2021-10-05 22:35:52.744 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres_1 | 2021-10-05 22:35:56.287 UTC [75] LOG: database system was shut down at 2021-10-05 22:35:51 UTC
postgres_1 | 2021-10-05 22:35:56.287 UTC [76] LOG: invalid length of startup packet
postgres_1 | 2021-10-05 22:35:56.498 UTC [1] LOG: database system is ready to accept connections
postgres_1 | 2021-10-05 22:36:14.860 UTC [83] LOG: could not receive data from client: Connection reset by peer
postgres_1 | 2021-10-05 22:38:17.574 UTC [1] LOG: received fast shutdown request
postgres_1 | 2021-10-05 22:38:17.729 UTC [1] LOG: aborting any active transactions
postgres_1 | 2021-10-05 22:38:17.732 UTC [1] LOG: background worker "logical replication launcher" (PID 82) exited with exit code 1
postgres_1 | 2021-10-05 22:38:17.734 UTC [77] LOG: shutting down
postgres_1 |
postgres_1 | PostgreSQL Database directory appears to contain a database; Skipping initialization
postgres_1 |
postgres_1 | 2021-10-06 18:00:48.812 UTC [1] LOG: starting PostgreSQL 12.8 (Debian 12.8-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
postgres_1 | 2021-10-06 18:00:48.824 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
postgres_1 | 2021-10-06 18:00:48.824 UTC [1] LOG: listening on IPv6 address "::", port 5432
postgres_1 | 2021-10-06 18:00:49.015 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
postgres_1 | 2021-10-06 18:00:49.422 UTC [25] LOG: database system shutdown was interrupted; last known up at 2021-10-05 22:38:17 UTC
postgres_1 | 2021-10-06 18:00:50.164 UTC [25] LOG: database system was not properly shut down; automatic recovery in progress
postgres_1 | 2021-10-06 18:00:50.264 UTC [25] LOG: redo starts at 0/164E6F8
postgres_1 | 2021-10-06 18:00:50.478 UTC [25] LOG: invalid record length at 0/16B9A58: wanted 24, got 0
postgres_1 | 2021-10-06 18:00:50.478 UTC [25] LOG: redo done at 0/16B9A30
postgres_1 | 2021-10-06 18:00:58.969 UTC [1] LOG: database system is ready to accept connections
base_1 | Nothing to run here.
server_1 | yarn run v1.22.5
server_1 | $ nx serve api
server_1 |
server_1 | > nx run api:serve
server_1 |
server_1 | > NX Using webpack 5. Reason: detected version 5 in node_modules/webpack/package.json
server_1 |
server_1 | Found an outdated version of webpack-merge
server_1 |
server_1 | If you want to use webpack 5, try installing compatible versions of the plugins.
server_1 | See: https://nx.dev/guides/webpack-5
server_1 |
server_1 | > NX Falling back to webpack 4 due to incompatible plugin versions
server_1 |
server_1 | Hash: ed1d775da9dd7eea6685
server_1 | Built at: 10/06/2021 6:01:38 PM
server_1 | Entrypoint main [big] = main.js main.js.map
server_1 | chunk {main} main.js, main.js.map (main) 300 KiB [entry] [rendered]
server_1 | Issues checking in progress...
server_1 | Debugger listening on ws://localhost:9229/8c56ce70-e232-499e-9b67-ee55db58320a
server_1 | For help, see: https://nodejs.org/en/docs/inspector
server_1 | No issues found.
server_1 | [Nest] 53 - 10/06/2021, 6:03:11 PM [NestFactory] Starting Nest application...
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] ConfigurationModule dependencies initialized +790ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] PrismaModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] JwtModule dependencies initialized +93ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] JwtModule dependencies initialized +2ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] DiscoveryModule dependencies initialized +2ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] ConfigHostModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] ImpersonationModule dependencies initialized +2ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] ServeStaticModule dependencies initialized +2ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] ScheduleModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] DataProviderModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] ConfigModule dependencies initialized +2ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] ConfigModule dependencies initialized +0ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] ExchangeRateDataModule dependencies initialized +248ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] SubscriptionModule dependencies initialized +15ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] AccessModule dependencies initialized +2ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] AuthDeviceModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] CacheModule dependencies initialized +2ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] DataGatheringModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] ExportModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] UserModule dependencies initialized +3ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] RedisCacheModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] InfoModule dependencies initialized +2ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] SymbolModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] AuthModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] ExperimentalModule dependencies initialized +2ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] AccountModule dependencies initialized +6ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] CacheModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] AppModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] AdminModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] OrderModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] ImportModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [InstanceLoader] PortfolioModule dependencies initialized +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] AppController {/api}: +276ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] AdminController {/api/admin}: +2ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/admin, GET} route +2ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/admin/gather/max, POST} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/admin/gather/profile-data, POST} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] SubscriptionController {/api/subscription}: +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/subscription/stripe/callback, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/subscription/stripe/checkout-session, POST} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] AccessController {/api/access}: +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/access, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] AccountController {/api/account}: +0ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/account/:id, DELETE} route +2ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/account, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/account/:id, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/account, POST} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/account/:id, PUT} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] UserController {/api/user}: +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/user/:id, DELETE} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/user, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/user, POST} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/user/setting, PUT} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/user/settings, PUT} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] AuthDeviceController {/api/auth-device}: +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/auth-device/:id, DELETE} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] AuthController {/api/auth}: +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/auth/anonymous/:accessToken, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/auth/google, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/auth/google/callback, GET} route +0ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/auth/webauthn/generate-registration-options, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/auth/webauthn/verify-attestation, POST} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/auth/webauthn/generate-assertion-options, POST} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/auth/webauthn/verify-assertion, POST} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] CacheController {/api/cache}: +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/cache/flush, POST} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] ExperimentalController {/api/experimental}: +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/experimental/benchmarks, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/experimental/benchmarks/:symbol, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] ExportController {/api/export}: +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/export, GET} route +2ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] ImportController {/api/import}: +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/import, POST} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] InfoController {/api/info}: +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/info, GET} route +5ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] OrderController {/api/order}: +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/order/:id, DELETE} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/order, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/order/:id, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/order, POST} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/order/:id, PUT} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] PortfolioController {/api/portfolio}: +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/portfolio/investments, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/portfolio/chart, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/portfolio/details, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/portfolio/performance, GET} route +0ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/portfolio/positions, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/portfolio/summary, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/portfolio/position/:symbol, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/portfolio/report, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RoutesResolver] SymbolController {/api/symbol}: +0ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/symbol/lookup, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:12 PM [RouterExplorer] Mapped {/api/symbol/:dataSource/:symbol, GET} route +1ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:15 PM [NestApplication] Nest application successfully started +2274ms
server_1 | [Nest] 53 - 10/06/2021, 6:03:15 PM Listening at http://localhost:3333 +2ms
server_1 | 7d data gathering has been started.
server_1 | 7d data gathering has been completed.
server_1 | data-gathering-7d: 9.863s
ghostfolio_base_1 exited with code 0
client_1 | yarn run v1.22.5
client_1 | $ ng serve client --disable-host-check --host 0.0.0.0
client_1 | Warning: Running a server with --disable-host-check is a security risk. See https://medium.com/webpack/webpack-dev-server-middleware-security-issues-1489d950874a for more information.
client_1 | - Generating browser application bundles (phase: setup)...
client_1 | ✔ Browser application bundle generation complete.
client_1 |
client_1 | Initial Chunk Files | Names | Size
client_1 | vendor.js | vendor | 5.34 MB
client_1 | styles.css | styles | 284.38 kB
client_1 | main.js | main | 168.29 kB
client_1 | polyfills.js | polyfills | 136.83 kB
client_1 | scripts.js | scripts | 93.05 kB
client_1 | runtime.js | runtime | 12.54 kB
client_1 |
client_1 | | Initial Total | 6.02 MB
client_1 |
client_1 | Lazy Chunk Files | Names | Size
client_1 | apps_client_src_app_pages_portfolio_transactions_transactions-page_module_ts.js | - | 624.25 kB
client_1 | default-node_modules_chartjs-adapter-date-fns_dist_chartjs-adapter-date-fns_esm_js.js | - | 604.86 kB
client_1 | apps_client_src_app_pages_portfolio_allocations_allocations-page_module_ts.js | - | 502.38 kB
client_1 | default-node_modules_angular_material_fesm2015_select_js-node_modules_angular_material_fesm20-9355cf.js | - | 295.33 kB
client_1 | default-libs_ui_src_lib_line-chart_line-chart_module_ts.js | - | 251.64 kB
client_1 | default-apps_client_src_app_components_portfolio-performance_portfolio-performance_module_ts--a7299c.js | - | 203.16 kB
client_1 | apps_client_src_app_pages_home_home-page_module_ts.js | - | 113.81 kB
client_1 | apps_client_src_app_pages_account_account-page_module_ts.js | - | 97.03 kB
client_1 | apps_client_src_app_pages_accounts_accounts-page_module_ts.js | - | 89.61 kB
client_1 | apps_client_src_app_pages_admin_admin-page_module_ts-node_modules_date-fns_esm__lib_assign_index_js.js | - | 72.99 kB
client_1 | default-apps_client_src_app_components_toggle_toggle_module_ts.js | - | 58.74 kB
client_1 | default-apps_client_src_app_components_symbol-icon_symbol-icon_module_ts-node_modules_angular-4cc55c.js | - | 53.13 kB
client_1 | apps_client_src_app_pages_register_register-page_module_ts.js | - | 46.63 kB
client_1 | apps_client_src_app_pages_landing_landing-page_module_ts.js | - | 44.83 kB
client_1 | default-node_modules_angular_material_fesm2015_progress-spinner_js.js | - | 43.48 kB
client_1 | apps_client_src_app_pages_about_about-page_module_ts.js | - | 42.45 kB
client_1 | default-apps_client_src_app_components_position_position_module_ts-libs_ui_src_lib_no-transac-38d8d8.js | - | 39.37 kB
client_1 | apps_client_src_app_pages_pricing_pricing-page_module_ts.js | - | 37.90 kB
client_1 | default-apps_client_src_app_components_position_position-detail-dialog_position-detail-dialog-c1a511.js | - | 35.86 kB
client_1 | apps_client_src_app_pages_portfolio_report_report-page_module_ts.js | - | 34.85 kB
client_1 | default-apps_client_src_app_core_auth_guard_ts-node_modules_angular_material_fesm2015_card_js.js | - | 33.67 kB
client_1 | apps_client_src_app_pages_blog_2021_07_hallo-ghostfolio_hallo-ghostfolio-page_module_ts.js | - | 33.11 kB
client_1 | apps_client_src_app_pages_zen_zen-page_module_ts.js | - | 32.19 kB
client_1 | apps_client_src_app_pages_blog_2021_07_hello-ghostfolio_hello-ghostfolio-page_module_ts.js | - | 31.19 kB
client_1 | apps_client_src_app_pages_portfolio_analysis_analysis-page_module_ts.js | - | 27.62 kB
client_1 | apps_client_src_app_pages_portfolio_portfolio-page_module_ts.js | - | 24.18 kB
client_1 | default-libs_ui_src_lib_value_index_ts.js | - | 22.86 kB
client_1 | apps_client_src_app_pages_resources_resources-page_module_ts.js | - | 17.73 kB
client_1 | apps_client_src_app_pages_webauthn_webauthn-page_module_ts.js | - | 16.20 kB
client_1 | apps_client_src_app_pages_auth_auth-page_module_ts.js | - | 7.58 kB
client_1 | common.js | common | 2.72 kB
client_1 |
client_1 | Build at: 2021-10-06T18:04:25.788Z - Hash: 3e44b00dbc12982c08a7 - Time: 121953ms
client_1 |
client_1 | Warning: /ghostfolio/apps/client/src/app/adapter/custom-date-adapter.ts depends on 'date-fns/locale/de/index'. CommonJS or AMD dependencies can cause optimization bailouts.
client_1 | For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies
client_1 |
client_1 | Warning: /ghostfolio/apps/client/src/app/services/user/user.service.ts depends on '@codewithdan/observable-store'. CommonJS or AMD dependencies can cause optimization bailouts.
client_1 | For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies
client_1 |
client_1 | Warning: /ghostfolio/libs/common/src/lib/config.ts depends on '@prisma/client'. CommonJS or AMD dependencies can cause optimization bailouts.
client_1 | For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies
client_1 |
client_1 | Warning: /ghostfolio/libs/ui/src/lib/line-chart/line-chart.component.ts depends on '@ghostfolio/common/helper'. CommonJS or AMD dependencies can cause optimization bailouts.
client_1 | For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies
client_1 |
client_1 | Warning: /ghostfolio/libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts depends on 'color'. CommonJS or AMD dependencies can cause optimization bailouts.
client_1 | For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies
client_1 |
client_1 | Warning: /ghostfolio/node_modules/svgmap/dist/svgMap.min.js depends on 'svg-pan-zoom'. CommonJS or AMD dependencies can cause optimization bailouts.
client_1 | For more info see: https://angular.io/guide/build#configuring-commonjs-dependencies
client_1 |
client_1 |
client_1 |
client_1 | ** Angular Live Development Server is listening on 0.0.0.0:4200, open your browser on http://localhost:4200/ **
client_1 |
client_1 |
client_1 | ✔ Compiled successfully.
```
You can then follow the last steps from Ghostfolio setup:
Login as Admin with the following Security Token: ae76872ae8f3419c6d6f64bf51888ecbcc703927a342d815fafe486acdb938da07d0cf44fca211a0be74a423238f535362d390a41e81e633a9ce668a6e31cdf9
Go to the Admin Control Panel and click Gather All Data to fetch historical data
Click Sign out and check out the Live Demo
Enjoy and invest responsibly :)