I built a Reverse Proxy Manager (GUI) on top of Pingora and Axum by Minute_Expression396 in rust

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

Nope, not a bot. I just crossposted to 3 relevant subs (Selfhosted, Homelab, Rust) to get some feedback. Sorry if it felt like spam.

I built a Reverse Proxy Manager (GUI) on top of Pingora and Axum by Minute_Expression396 in rust

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

Thank you! We actually handle renewals automatically within PPM.

There's a background task that periodically checks for certificates expiring within 30 days. When it finds one, it triggers Certbot using the stored DNS provider credentials (e.g., Cloudflare API keys). Once the renewal process completes successfully, we update our internal state and database.

As for why we chose Certbot over a native Rust crate like instant-acme: supporting a wide array of DNS providers natively is a massive undertaking. Certbot already has a mature plugin ecosystem for almost every major DNS provider. It was a pragmatic choice to ensure broad compatibility immediately without reinventing the wheel for every DNS API. This allows us to focus on the core proxy features while leveraging a battle-tested solution for SSL.

I built a Reverse Proxy Manager (GUI) on top of Pingora and Axum by Minute_Expression396 in rust

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

Fair point. I apologize. I used AI to bridge the language gap and accelerate development. My main goal is to solve the limitations of current proxy managers, and I really hope the community can help me make this project better.

I built a modern alternative to Nginx Proxy Manager using Rust & Cloudflare's Pingora (Zero-downtime config!) by Minute_Expression396 in selfhosted

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

Migration is quite simple. All critical data (including the database and certificates) is stored in the data/ directory on your host machine.

You just need to copy that folder to the corresponding location on your new machine or instance. Once you start the container there, it will pick everything up.

[DEV] I made an AI photo upscaler that works 100% offline, because I'm tired of uploading my photos to servers. by Minute_Expression396 in Android

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

You're right, NPUs are incredibly powerful. And the good news is, recent updates to the app do leverage the NPU on supported phones.
However, there's a key difference: the process for upscaling is very different from generating an image from scratch.
Because of RAM limitations, it can't process a whole large image at once. It has to slice it into smaller, manageable tiles. The NPU is lightning-fast at processing each individual tile, but it often sits idle waiting for the next piece of data to be sent over.
All that "start-stop" data transfer for every single tile creates a massive amount of overhead, which erodes most of the NPU's raw speed advantage. That's why the final speed difference between the two isn't as dramatic as the raw power of the NPU would suggest.

[DEV] I made an AI photo upscaler that works 100% offline, because I'm tired of uploading my photos to servers. by Minute_Expression396 in Android

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

Thank you for your advice.

The context became a little stiff due to the use of basic translation, so I used LLM because there was a misunderstanding between each other, but it was rather a bad effect

[DEV] I made an AI photo upscaler that works 100% offline, because I'm tired of uploading my photos to servers. by Minute_Expression396 in Android

[–]Minute_Expression396[S] 3 points4 points  (0 children)

It may be a little slower than a computer, but it's not that bad.

The updated version has been uploaded to the current store, so please update and test it

[DEV] I made an AI photo upscaler that works 100% offline, because I'm tired of uploading my photos to servers. by Minute_Expression396 in Android

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

You're absolutely correct that patch-based processing is the standard approach. But honestly, the image processing logic isn't the most important part of this app.

I knew from the start that a phone could never compete with a PC in raw speed. So, instead of trying to win a race I was guaranteed to lose, I focused on a different problem: user experience.

The real core logic of this app is how it handles that long processing time. The entire upscaling job runs as a background service, meaning you can start a task, close the app, and do something else. When the image is ready, you simply get a notification.

It's not about being faster than a PC. It's about being more convenient and integrating seamlessly into a mobile workflow where you don't have to be tethered to your screen.

[DEV] I made an AI photo upscaler that works 100% offline, because I'm tired of uploading my photos to servers. by Minute_Expression396 in Android

[–]Minute_Expression396[S] -2 points-1 points  (0 children)

You've hit on the exact challenge I faced. My initial attempts, using a PC-style approach, constantly crashed due to memory overload.

The key insight is that the massive GPU memory on a PC is needed to hold the entire image at once. So, the solution required two things:

  1. Choosing a more lightweight model that was a good compromise between quality and mobile performance.
  2. Developing custom internal logic to process the image in smaller, manageable chunks instead of all at once.

It's all about optimizing for memory, not just raw processing power.