Compare commits

..

1 Commits

Author SHA1 Message Date
8fa3561214 Update dependency @eslint/js to ^9.27.0
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-05-19 00:07:38 +00:00
9 changed files with 25 additions and 148 deletions

View File

@ -38,7 +38,6 @@ steps:
- cd moneymgr_backend - cd moneymgr_backend
- rustup component add clippy - rustup component add clippy
- cargo clippy -- -D warnings - cargo clippy -- -D warnings
- cargo clippy --example api_curl -- -D warnings
- name: backend_test - name: backend_test
image: rust image: rust
@ -52,7 +51,7 @@ steps:
- cargo test - cargo test
- name: backend_build - name: backend_compile
image: rust image: rust
volumes: volumes:
- name: rust_registry - name: rust_registry
@ -68,16 +67,15 @@ steps:
- cd moneymgr_backend - cd moneymgr_backend
- mv /tmp/web_build/dist static - mv /tmp/web_build/dist static
- cargo build --release - cargo build --release
- cargo build --release --example api_curl - ls -lah target/release/moneymgr_backend
- ls -lah target/release/moneymgr_backend target/release/examples/api_curl - cp target/release/moneymgr_backend /tmp/release
- cp target/release/moneymgr_backend target/release/examples/api_curl /tmp/release
# Release # Release
- name: gitea_release - name: gitea_release
image: plugins/gitea-release image: plugins/gitea-release
depends_on: depends_on:
- backend_build - backend_compile
when: when:
event: event:
- tag - tag

View File

@ -3,46 +3,10 @@
Open Source web-based personal expenses tool. Open Source web-based personal expenses tool.
**Note :** This project does not handle authentication itself. Instead, it relies on OpenID to achieve users authentication.
## Setup prod env
1. Install prerequisites:
1. docker
2. docker compose
3. git
2. Clone this git repository:
```bash
git clone https://gitea.communiquons.org/pierre/MoneyMgr
cd MoneyMgr/docker_prod
```
3. Copy and adapt env values
```bash
cp .env.sample .env
nano .env
```
4. Create required directories:
```bash
mkdir -p storage/{db,redis-data,redis-conf,minio}
```
5. Start containers
```bash
docker compose up
```
6. Checkout http://localhost:8000/
> The default credentials are `admin` / `admin`
## Setup dev env ## Setup dev env
1. Install prerequisites: 1. Install prerequisites:
1. docker 1. docker
2. docker compose 2. docker-compose
3. rust 3. rust
4. node 4. node

View File

@ -1,10 +0,0 @@
MINIO_ROOT_USER=rootuser
MINIO_ROOT_PASSWORD=rootpassword
DB_USER=db_user
DB_PASSWORD=db_password
REDIS_PASS=redis_password
WEBSITE_ORIGIN=http://localhost:8000
APP_SECRET=secretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecret
AUTH_SECRET_KEY=secretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecret
OIDC_CLIENT_ID=bar
OIDC_CLIENT_SECRET=foo

View File

@ -1,3 +0,0 @@
.env
storage
auth/users.json

View File

@ -1,5 +0,0 @@
- id: ${OIDC_CLIENT_ID}
name: MoneyMgr
description: Money management tool
secret: ${OIDC_CLIENT_SECRET}
redirect_uri: ${APP_ORIGIN}/oidc_cb

View File

@ -1,79 +0,0 @@
services:
minio:
image: minio/minio
user: "1000"
environment:
- MINIO_ROOT_USER=$MINIO_ROOT_USER
- MINIO_ROOT_PASSWORD=$MINIO_ROOT_PASSWORD
volumes:
- ./storage/minio:/data
command: [ "minio", "server", "/data", "--console-address", ":9090" ]
ports:
- 9000:9000
- 9090:9090
expose:
- 9000
db:
image: postgres
user: "1000"
ports:
- "5432:5432"
expose:
- 5432
environment:
- POSTGRES_USER=$DB_USER
- POSTGRES_PASSWORD=$DB_PASSWORD
- POSTGRES_DB=moneymgr
volumes:
- ./storage/db:/var/lib/postgresql/data
oidc:
image: pierre42100/basic_oidc
user: "1000"
environment:
- LISTEN_ADDRESS=0.0.0.0:9001
- STORAGE_PATH=/storage
- TOKEN_KEY=$AUTH_SECRET_KEY
- WEBSITE_ORIGIN=http://localhost:9001
- OIDC_CLIENT_ID=$OIDC_CLIENT_ID
- OIDC_CLIENT_SECRET=$OIDC_CLIENT_SECRET
- APP_ORIGIN=$WEBSITE_ORIGIN
expose:
- 9001
ports:
- 9001:9001
volumes:
- ./auth:/storage
redis:
image: redis:alpine
user: "1000"
command: redis-server --requirepass ${REDIS_PASS:-secretredis}
expose:
- 6379
volumes:
- ./storage/redis-data:/data
- ./storage/redis-conf:/usr/local/etc/redis/redis.conf
moneymgr:
image: pierre42100/moneymgr_backend
user: "1000"
ports:
- 8000:8000
environment:
- WEBSITE_ORIGIN=${WEBSITE_ORIGIN}
- SECRET=${APP_SECRET}
- DB_HOST=db
- DB_USERNAME=$DB_USER
- DB_PASSWORD=$DB_PASSWORD
- DB_NAME=moneymgr
- OIDC_CONFIGURATION_URL=http://oidc:9001/.well-known/openid-configuration
- OIDC_PROVIDER_NAME=OIDC
- OIDC_CLIENT_ID=$OIDC_CLIENT_ID
- OIDC_CLIENT_SECRET=$OIDC_CLIENT_SECRET
- S3_ENDPOINT=http://minio:9000
- S3_ACCESS_KEY=$MINIO_ROOT_USER
- S3_SECRET_KEY=$MINIO_ROOT_PASSWORD
- REDIS_HOSTNAME=redis
- REDIS_PASSWORD=${REDIS_PASS:-secretredis}

View File

@ -14,7 +14,7 @@ use std::process::Command;
struct Args { struct Args {
/// URL to Money manager API /// URL to Money manager API
#[arg(short('U'), long, env, default_value = "http://localhost:8000/api")] #[arg(short('U'), long, env, default_value = "http://localhost:8000/api")]
moneymgr_url: String, matrix_gw_url: String,
/// Token ID /// Token ID
#[arg(short('i'), long, env)] #[arg(short('i'), long, env)]
@ -39,8 +39,7 @@ struct Args {
fn main() { fn main() {
let args: Args = Args::parse(); let args: Args = Args::parse();
let full_url = format!("{}{}", args.moneymgr_url, args.uri); let full_url = format!("{}{}", args.matrix_gw_url, args.uri);
log::debug!("Full URL: {full_url}"); log::debug!("Full URL: {full_url}");
let key = HS256Key::from_bytes(args.token_secret.as_bytes()); let key = HS256Key::from_bytes(args.token_secret.as_bytes());

View File

@ -30,7 +30,7 @@
"ts-pattern": "^5.7.0" "ts-pattern": "^5.7.0"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.26.0", "@eslint/js": "^9.27.0",
"@types/react": "^19.1.4", "@types/react": "^19.1.4",
"@types/react-dom": "^19.1.5", "@types/react-dom": "^19.1.5",
"@vitejs/plugin-react": "^4.4.1", "@vitejs/plugin-react": "^4.4.1",
@ -1145,13 +1145,16 @@
} }
}, },
"node_modules/@eslint/js": { "node_modules/@eslint/js": {
"version": "9.26.0", "version": "9.27.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.26.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.27.0.tgz",
"integrity": "sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==", "integrity": "sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"url": "https://eslint.org/donate"
} }
}, },
"node_modules/@eslint/object-schema": { "node_modules/@eslint/object-schema": {
@ -3494,6 +3497,16 @@
"url": "https://opencollective.com/eslint" "url": "https://opencollective.com/eslint"
} }
}, },
"node_modules/eslint/node_modules/@eslint/js": {
"version": "9.26.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.26.0.tgz",
"integrity": "sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/espree": { "node_modules/espree": {
"version": "10.3.0", "version": "10.3.0",
"resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",

View File

@ -32,7 +32,7 @@
"ts-pattern": "^5.7.0" "ts-pattern": "^5.7.0"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.26.0", "@eslint/js": "^9.27.0",
"@types/react": "^19.1.4", "@types/react": "^19.1.4",
"@types/react-dom": "^19.1.5", "@types/react-dom": "^19.1.5",
"@vitejs/plugin-react": "^4.4.1", "@vitejs/plugin-react": "^4.4.1",