Reactive-Resume #107

Closed
opened 2025-09-09 19:43:21 -05:00 by giteasync · 24 comments

Originally created by @vhsdream on GitHub.

Originally assigned to: @vhsdream on GitHub.

https://github.com/community-scripts/ProxmoxVE/discussions/1859
https://github.com/AmruthPillai/Reactive-Resume/tree/docs

Application Name
Reactive Resume

Website
https://rxresu.me/

Description
It is a nice web application to quickly generate and resumes, with a lot of features to make the process less tedious while still allowing for a lot of customizability if desired.
It can be self hosted or used with an account on the website, but personally I would feel more comfortable with self hosting it and knowing that it won't disappear some day.

Originally created by @vhsdream on GitHub. Originally assigned to: @vhsdream on GitHub. https://github.com/community-scripts/ProxmoxVE/discussions/1859 https://github.com/AmruthPillai/Reactive-Resume/tree/docs **Application Name** Reactive Resume **Website** https://rxresu.me/ **Description** It is a nice web application to quickly generate and resumes, with a lot of features to make the process less tedious while still allowing for a lot of customizability if desired. It can be self hosted or used with an account on the website, but personally I would feel more comfortable with self hosting it and knowing that it won't disappear some day.
giteasync added the Started Migration To ProxmoxVE label 2025-09-09 19:43:21 -05:00
Author

@bvdberg01 commented on GitHub:

That github action uses an underscore when it should be a hyphen; just FYI

Tnx, I will fix it :)

@bvdberg01 commented on GitHub: > That github action uses an underscore when it should be a hyphen; just FYI Tnx, I will fix it :)
Author

@github-actions[bot] commented on GitHub:

The reactive-resume script is ready for testing:
bash -c "$(curl -fsSL https://github.com/community-scripts/ProxmoxVED/raw/main/ct/reactive-resume.sh)"
Note: This is not in the official repo yet—it's just a dev version! After merging into ProxmoxVE, it will need to be recreated.

@github-actions[bot] commented on GitHub: The reactive-resume script is ready for testing: ```bash -c "$(curl -fsSL https://github.com/community-scripts/ProxmoxVED/raw/main/ct/reactive-resume.sh)"``` Note: This is not in the official repo yet—it's just a dev version! After merging into ProxmoxVE, it will need to be recreated.
Author

@vhsdream commented on GitHub:

That github action uses an underscore when it should be a hyphen; just FYI

@vhsdream commented on GitHub: That github action uses an underscore when it should be a hyphen; just FYI
Author

@kkroboth commented on GitHub:

No issues installing. 🎉

Should the services it depends on be accessible from LAN ip or just 127.0.0.1 internally? Such as PostgreSQL, Browserless, and minio. Looking at the docker setup they have those internally linked and not exposed.

Not a big deal as I'll hook this up to my PostgreSQL server instead of the one installed in this script.

Seeing those servers exposes on all network interfaces instead of localhost, with of course the exception Reactive Resume on port 3000.

root@reactive-resume:~# ss -tulpn
Netid               State                Recv-Q               Send-Q                              Local Address:Port                                Peer Address:Port               Process                                            
udp                 UNCONN               0                    0                                         0.0.0.0:68                                       0.0.0.0:*                   users:(("dhclient",pid=114,fd=7))                 
tcp                 LISTEN               0                    4096                                    127.0.0.1:9000                                     0.0.0.0:*                   users:(("minio",pid=43155,fd=7))                  
tcp                 LISTEN               0                    100                                     127.0.0.1:25                                       0.0.0.0:*                   users:(("master",pid=503,fd=13))                  
tcp                 LISTEN               0                    200                                     127.0.0.1:5432                                     0.0.0.0:*                   users:(("postgres",pid=13280,fd=7))               
tcp                 LISTEN               0                    511                                 192.168.1.244:8080                                     0.0.0.0:*                   users:(("node",pid=43346,fd=20))                  
tcp                 LISTEN               0                    4096                                            *:45949                                          *:*                   users:(("minio",pid=43155,fd=9))                  
tcp                 LISTEN               0                    200                                         [::1]:5432                                        [::]:*                   users:(("postgres",pid=13280,fd=6))               
tcp                 LISTEN               0                    4096                                            *:9000                                           *:*                   users:(("minio",pid=43155,fd=6))                  
tcp                 LISTEN               0                    4096                                            *:22                                             *:*                   users:(("sshd",pid=5433,fd=3))                    
tcp                 LISTEN               0                    4096                                        [::1]:9000                                        [::]:*                   users:(("minio",pid=43155,fd=8))                  
tcp                 LISTEN               0                    511                                             *:3000                                           *:*                   users:(("node",pid=43423,fd=28))                  
tcp                 LISTEN               0                    100                                         [::1]:25                                          [::]:*                   users:(("master",pid=503,fd=14))
@kkroboth commented on GitHub: No issues installing. 🎉 Should the services it depends on be accessible from LAN ip or just `127.0.0.1` internally? Such as PostgreSQL, Browserless, and minio. Looking at the [docker setup](https://docs.rxresu.me/product-guides/self-hosting-reactive-resume-using-docker) they have those internally linked and not exposed. Not a big deal as I'll hook this up to my PostgreSQL server instead of the one installed in this script. Seeing those servers exposes on all network interfaces instead of localhost, with of course the exception Reactive Resume on port 3000. ``` root@reactive-resume:~# ss -tulpn Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:* users:(("dhclient",pid=114,fd=7)) tcp LISTEN 0 4096 127.0.0.1:9000 0.0.0.0:* users:(("minio",pid=43155,fd=7)) tcp LISTEN 0 100 127.0.0.1:25 0.0.0.0:* users:(("master",pid=503,fd=13)) tcp LISTEN 0 200 127.0.0.1:5432 0.0.0.0:* users:(("postgres",pid=13280,fd=7)) tcp LISTEN 0 511 192.168.1.244:8080 0.0.0.0:* users:(("node",pid=43346,fd=20)) tcp LISTEN 0 4096 *:45949 *:* users:(("minio",pid=43155,fd=9)) tcp LISTEN 0 200 [::1]:5432 [::]:* users:(("postgres",pid=13280,fd=6)) tcp LISTEN 0 4096 *:9000 *:* users:(("minio",pid=43155,fd=6)) tcp LISTEN 0 4096 *:22 *:* users:(("sshd",pid=5433,fd=3)) tcp LISTEN 0 4096 [::1]:9000 [::]:* users:(("minio",pid=43155,fd=8)) tcp LISTEN 0 511 *:3000 *:* users:(("node",pid=43423,fd=28)) tcp LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=503,fd=14)) ```
Author

@bvdberg01 commented on GitHub:

Installs fine, but diskspace needs to be extended:

Image

@bvdberg01 commented on GitHub: Installs fine, but diskspace needs to be extended: ![Image](https://github.com/user-attachments/assets/23bcc168-6066-4987-a671-1dc380f51d50)
Author

@MickLesk commented on GitHub:

Script need some more Information, e.g.

  1. Register needed (but there you get an mail hint, can be ignored?)
  2. Is it possible to create an default user?
  3. Where is the config data for mail smtp and the other things?
@MickLesk commented on GitHub: Script need some more Information, e.g. 1. Register needed (but there you get an mail hint, can be ignored?) 2. Is it possible to create an default user? 3. Where is the config data for mail smtp and the other things?
Author

@kkroboth commented on GitHub:

My disk space is around 4.25G and did not exceed bootdisk size. I'm using ZFS.

@vhsdream Awesome, I re-installed the lxc and don't see those services exposed! I also tested exporting resume as PDF and no issues there.

@kkroboth commented on GitHub: My disk space is around 4.25G and did not exceed bootdisk size. I'm using ZFS. @vhsdream Awesome, I re-installed the lxc and don't see those services exposed! I also tested exporting resume as PDF and no issues there.
Author

@MickLesk commented on GitHub:

funny, this is actually such a small “tool”, but it feels like it takes longer to build than many other scripts. :D

@MickLesk commented on GitHub: funny, this is actually such a small “tool”, but it feels like it takes longer to build than many other scripts. :D
Author

@vhsdream commented on GitHub:

@kkroboth Thanks for testing it out. Indeed we can change the configuration to have the browserless instance only listening on localhost, and postgres is already doing that.

After some struggle I figured out how to allow the export/download PDF feature to work, while keeping the Minio web console inaccessible. They don't really spell it out for you. I'll push the update with all the changes but you can also test without having to reinstall.

In /opt/Reactive-Resume/.env - PUBLIC_URL and STORAGE_URL should stay the same:

# for Chrome/Browserless
CHROME_URL=ws://localhost:8080

# for the storage endpoint
STORAGE_ENDPOINT=localhost

In /opt/minio/.env add the following:

MINIO_OPTS="--address :9000 --console-address 127.0.0.1:9001"

Restart the container and check the listening ports; although port 9000 is listening on your local IP, you can't reach the console due to Minio redirecting you to port 9001. But exporting a PDF still works.

I'm not saying this isn't bypassable though - now I'm a little concerned about an SSRF, and I will see if I can test my theory this weekend. I wouldn't make this app externally-accessible just yet if you're not using Docker.

@kkroboth Editing to add that you also need to change HOST to localhost in the Browserless config at /opt/browserless/.env

@vhsdream commented on GitHub: @kkroboth Thanks for testing it out. Indeed we can change the configuration to have the browserless instance only listening on localhost, and postgres is already doing that. After some struggle I figured out how to allow the export/download PDF feature to work, while keeping the Minio web console inaccessible. They don't really spell it out for you. I'll push the update with all the changes but you can also test without having to reinstall. In `/opt/Reactive-Resume/.env` - `PUBLIC_URL` and `STORAGE_URL` should stay the same: ``` # for Chrome/Browserless CHROME_URL=ws://localhost:8080 # for the storage endpoint STORAGE_ENDPOINT=localhost ``` In `/opt/minio/.env` add the following: ``` MINIO_OPTS="--address :9000 --console-address 127.0.0.1:9001" ``` Restart the container and check the listening ports; although port 9000 is listening on your local IP, you can't reach the console due to Minio redirecting you to port 9001. But exporting a PDF still works. I'm not saying this isn't bypassable though - now I'm a little concerned about an SSRF, and I will see if I can test my theory this weekend. I wouldn't make this app externally-accessible just yet if you're not using Docker. @kkroboth Editing to add that you also need to change `HOST` to `localhost` in the Browserless config at `/opt/browserless/.env`
Author

@vhsdream commented on GitHub:

@bvdberg01 Of course I'm willing to accommodate, but this was not my experience after installation:

Image

What filesystem do you use? I'm using ZFS and I'm wondering if the differences I see are the result of LVM or something?

@vhsdream commented on GitHub: @bvdberg01 Of course I'm willing to accommodate, but this was not my experience after installation: ![Image](https://github.com/user-attachments/assets/7b30712b-2bab-434d-9fd1-dbcfb0da6bb2) What filesystem do you use? I'm using ZFS and I'm wondering if the differences I see are the result of LVM or something?
Author

@MickLesk commented on GitHub:

Image

changed manually version to 4.4.3 as test:

=> Script breaking because the missing storage. Need to check, if you can do this smarter or remove unneeded files. maybe @bvdberg01 has an idea (because the wiki.js shrink)

Image Image
@MickLesk commented on GitHub: <img width="657" alt="Image" src="https://github.com/user-attachments/assets/70bb951a-3248-4b0a-955c-4a3ccb45fdd5" /> changed manually version to 4.4.3 as test: => Script breaking because the missing storage. Need to check, if you can do this smarter or remove unneeded files. maybe @bvdberg01 has an idea (because the wiki.js shrink) <img width="1030" alt="Image" src="https://github.com/user-attachments/assets/37835e78-773f-4762-be15-d7810ff3b4ba" /> <img width="394" alt="Image" src="https://github.com/user-attachments/assets/9a877b57-0213-4730-ba8a-b8b030735f7b" />
Author

@vhsdream commented on GitHub:

I've maybe figured out a way to have browserless work without needing to install Chrome, Edge, Firefox and Webkit. Please try the updated install script and we'll see if it's better.

@vhsdream commented on GitHub: I've maybe figured out a way to have browserless work without needing to install Chrome, Edge, Firefox and Webkit. Please try the updated install script and we'll see if it's better.
Author

@vhsdream commented on GitHub:

Script need some more Information, e.g.

1. Register needed (but there you get an mail hint, can be ignored?)

2. Is it possible to create an default user?

3. Where is the config data for mail smtp and the other things?

For 1 and 3 - if there is no email configured, there is an 'account activation' link sent in stdout, but going through all that is currently optional so I didn't try setting it up just yet. It looks like setting up email is completely up to the user, as far as I can tell.

Yeah right now there seems to be some issue with browserless where it won't run unless you have all of the browsers installed, even though this app only uses chrome. It's super annoying and I want to try to find a better way.

For 2 - I don't think so - because all data is handled in postgres and it's probably not a good idea to mess around with that, but I can't be 100% sure.

I'm going to work on the updater today to see if there are redundant or unnecessary commands since I borrowed the Browserless part from the changedetection script.

@vhsdream commented on GitHub: > Script need some more Information, e.g. > > 1. Register needed (but there you get an mail hint, can be ignored?) > > 2. Is it possible to create an default user? > > 3. Where is the config data for mail smtp and the other things? For 1 and 3 - if there is no email configured, there is an 'account activation' link sent in stdout, but going through all that is currently optional so I didn't try setting it up just yet. It looks like setting up email is completely up to the user, as far as I can tell. Yeah right now there seems to be some issue with browserless where it won't run unless you have all of the browsers installed, even though this app only uses chrome. It's super annoying and I want to try to find a better way. For 2 - I don't _think_ so - because all data is handled in postgres and it's probably not a good idea to mess around with that, but I can't be 100% sure. I'm going to work on the updater today to see if there are redundant or unnecessary commands since I borrowed the Browserless part from the `changedetection` script.
Author

@Lonnroth commented on GitHub:

Image

Image
(I always disable IPv6)

Works for me, good work!!

@Lonnroth commented on GitHub: ![Image](https://github.com/user-attachments/assets/aad9d22e-1ca8-4125-b916-8771b40f062b) ![Image](https://github.com/user-attachments/assets/6357fe96-4ab7-4d91-a672-864c0878f814) (I always disable IPv6) Works for me, good work!!
Author

@bvdberg01 commented on GitHub:

Image

changed manually version to 4.4.3 as test:

=> Script breaking because the missing storage. Need to check, if you can do this smarter or remove unneeded files. maybe @bvdberg01 has an idea (because the wiki.js shrink)

Image Image

Wiki.js was more a install time fix than a disk space ;)

@bvdberg01 commented on GitHub: > <img width="657" alt="Image" src="https://github.com/user-attachments/assets/70bb951a-3248-4b0a-955c-4a3ccb45fdd5" /> > > changed manually version to 4.4.3 as test: > > => Script breaking because the missing storage. Need to check, if you can do this smarter or remove unneeded files. maybe @bvdberg01 has an idea (because the wiki.js shrink) > > <img width="1030" alt="Image" src="https://github.com/user-attachments/assets/37835e78-773f-4762-be15-d7810ff3b4ba" /> > > <img width="394" alt="Image" src="https://github.com/user-attachments/assets/9a877b57-0213-4730-ba8a-b8b030735f7b" /> Wiki.js was more a install time fix than a disk space ;)
Author

@github-actions[bot] commented on GitHub:

Not all required files were found for reactiveresume. Please check the files and try again. Missing: frontend/public/json/reactiveresume.json.

@github-actions[bot] commented on GitHub: Not all required files were found for reactiveresume. Please check the files and try again. Missing: frontend/public/json/reactiveresume.json.
Author

@MickLesk commented on GitHub:

@vhsdream ive changed the old wget to curls.

Theoretically it is ready to merge into Live, but since you are also using LOCAL_IP, you can have a look at documenso-install.sh, there is a “new” function at the top. This refers to the tools.func in the core. (the bottom lines). This will automatically deploy an IP service on the LXC.

@MickLesk commented on GitHub: @vhsdream ive changed the old wget to curls. Theoretically it is ready to merge into Live, but since you are also using LOCAL_IP, you can have a look at documenso-install.sh, there is a “new” function at the top. This refers to the tools.func in the core. (the bottom lines). This will automatically deploy an IP service on the LXC.
Author

@vhsdream commented on GitHub:

@MickLesk This will get pushed to the main repo via some workflow, right? Or do we still need to make manual PRs there?

For the local IP, that sure seems like a lot just to get the local IP address - installing a script, systemd timer and service file; will it become mandatory in the future to use all available functions if there is one for our use case? Will the installation of additional scripts/service files be optional?

Anyway just tested the install and it works great still, thanks!

@vhsdream commented on GitHub: @MickLesk This will get pushed to the main repo via some workflow, right? Or do we still need to make manual PRs there? For the local IP, that sure seems like a lot just to get the local IP address - installing a script, systemd timer and service file; will it become mandatory in the future to use all available functions if there is one for our use case? Will the installation of additional scripts/service files be optional? Anyway just tested the install and it works great still, thanks!
Author

@AdimoUK commented on GitHub:

Worked well for me too! All good here :)

@AdimoUK commented on GitHub: Worked well for me too! All good here :)
Author

@MickLesk commented on GitHub:

Well, the point is that many use DHCP and the IP's change and then you have to edit the system files and .env's all the time. It should run autonomously and “heal” itself accordingly
The time is only 60sec at the moment, as I always run various tests in parallel. Presumably a reaction to network-change and onboot is sufficient

@MickLesk commented on GitHub: Well, the point is that many use DHCP and the IP's change and then you have to edit the system files and .env's all the time. It should run autonomously and “heal” itself accordingly The time is only 60sec at the moment, as I always run various tests in parallel. Presumably a reaction to network-change and onboot is sufficient
Author

@github-actions[bot] commented on GitHub:

Files deleted with PR #225

@github-actions[bot] commented on GitHub: Files deleted with PR #225
Author

@MickLesk commented on GitHub:

@michelroegl-brunner

@MickLesk commented on GitHub: @michelroegl-brunner
Author

@github-actions[bot] commented on GitHub:

A PR has been created for reactive-resume: community-scripts/ProxmoxVE#3980

@github-actions[bot] commented on GitHub: A PR has been created for reactive-resume: community-scripts/ProxmoxVE#3980
Author

@michelroegl-brunner commented on GitHub:

The Problem was the Issue title "Reactive Resume", but the files where called rective-resume.

@michelroegl-brunner commented on GitHub: The Problem was the Issue title "Reactive Resume", but the files where called rective-resume.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: community-scripts/ProxmoxVED#107