Repository navigation
Replies: 7 comments 1 reply
|
Hey, yeah I'm still here just haven't had much time for adding new features. I still actively use the application. Based on your error message it seems to be failing on getting the IP address list that can be used from the router for the wireguard interface. |
|
Hello!! :D No worries, suprised you took time out of your day to answer this, thank you :) I changed the interface name just in case it didnt like the dash character. services: |
|
Lol i was just about to write that i forgot to add the address to the interface... Thank you for the help and for creating this tool! :D |
|
Awesome, Let me know if you have any other issues :) |
|
I have now added this step to the readme as well |
|
Right, probably a good idea thank you :D |


Uh oh!
There was an error while loading. Please reload this page.
Hello :D
I have been looking for something to manage wireguard clients on my router and found this application.
Tried setting it up but have been unsuccessful and since it seems there has not been much activity in this repo i just wanted to check if this is still possible to use.
Mikroguard seems to be able to login to the router as i can verify with last login on the account on the router,.
Wireguard interface is created.
services:
MikroGuard:
image: ghcr.io/xterm-inator/mikroguard:latest
container_name: mikroguard
restart: always
ports:
- 20052:8000
volumes:
- /srv/docker-data/mikroguard:/opt/app/storage
environment:
- APP_KEY="appkey"
- ROUTEROS_HOST="192.168.0.1"
- ROUTEROS_PORT="8728"
- ROUTEROS_USER="user"
- ROUTEROS_PASS="password"
- ROUTEROS_WIREGUARD_INTERFACE="wg-c2s"
- ROUTEROS_WIREGUARD_ENDPOINT="vpn.domain.com:47611"
- APP_URL="https://mikroguard.domain.com"
INFO Nothing to migrate.
INFO Server running….
Local: http://0.0.0.0:8000
Press Ctrl+C to stop the server
[2026-02-07 03:44:26] production.ERROR: foreach() argument must be of type array|object, null given {"userId":1,"exception":"[object] (ErrorException(code: 0): foreach() argument must be of type array|object, null given at /opt/app/app/Services/CreatesUserWireGuardConfig.php:66)
�
[stacktrace]
#0 /opt/app/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(256): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'foreach() argum...', '/opt/app/app/Se...', 66)
#1 /opt/app/app/Services/CreatesUserWireGuardConfig.php(66): Illuminate\Foundation\Bootstrap\HandleExceptions->{closure:Illuminate\Foundation\Bootstrap\HandleExceptions::forwardsTo():255}(2, 'foreach() argum...', '/opt/app/app/Se...', 66)
#2 /opt/app/app/Services/CreatesUserWireGuardConfig.php(24): App\Services\CreatesUserWireGuardConfig->getNextAvailableIP()
#3 /opt/app/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): App\Services\CreatesUserWireGuardConfig->__invoke()
#4 /opt/app/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\Container\BoundMethod::{closure:Illuminate\Container\BoundMethod::call():35}()
#5 /opt/app/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(83): Illuminate\Container\Util::unwrapIfClosure(Object(Closure))
#6 /opt/app/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Object(App\Services\CreatesUserWireGuardConfig), Object(Closure))
#7 /opt/app/vendor/laravel/framework/src/Illuminate/Container/Container.php(754): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Object(App\Services\CreatesUserWireGuardConfig), Array, NULL)
#8 /opt/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(361): Illuminate\Container\Container->call(Object(App\Services\CreatesUserWireGuardConfig))
#9 /opt/app/app/Http/Controllers/ConfigController.php(40): Illuminate\Support\Facades\Facade::__callStatic('call', Array)
#10 /opt/app/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\Http\Controllers\ConfigController->store(Object(App\Models\User))
#11 /opt/app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\Routing\Controller->callAction('store', Array)
#12 /opt/app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(266): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\ConfigController), 'store')
#13 /opt/app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(212): Illuminate\Routing\Route->runController()
#14 /opt/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(808): Illuminate\Routing\Route->run()
#15 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\Routing\Router->{closure:Illuminate\Routing\Router::runRouteWithinStack():807}(Object(Illuminate\Http\Request))
#16 /opt/app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(51): Illuminate\Pipeline\Pipeline->{closure:Illuminate\Pipeline\Pipeline::prepareDestination():168}(Object(Illuminate\Http\Request))
#17 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure))
#18 /opt/app/vendor/laravel/framework/src/Illuminate/Http/Middleware/SetCacheHeaders.php(51): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#19 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Http\Middleware\SetCacheHeaders->handle(Object(Illuminate\Http\Request), Object(Closure), 'no_cache;max_ag...')
#20 /opt/app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(161): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#21 /opt/app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(127): Illuminate\Routing\Middleware\ThrottleRequests->handleRequest(Object(Illuminate\Http\Request), Object(Closure), Array)
#22 /opt/app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(89): Illuminate\Routing\Middleware\ThrottleRequests->handleRequestUsingNamedLimiter(Object(Illuminate\Http\Request), Object(Closure), 'api', Object(Closure))
#23 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Routing\Middleware\ThrottleRequests->handle(Object(Illuminate\Http\Request), Object(Closure), 'api')
#24 /opt/app/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(64): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#25 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Auth\Middleware\Authenticate->handle(Object(Illuminate\Http\Request), Object(Closure), 'sanctum')
#26 /opt/app/vendor/laravel/sanctum/src/Http/Middleware/EnsureFrontendRequestsAreStateful.php(25): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#27 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful->{closure:Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::handle():24}(Object(Illuminate\Http\Request))
#28 /opt/app/vendor/laravel/sanctum/src/Http/Middleware/AuthenticateSession.php(66): Illuminate\Pipeline\Pipeline->{closure:Illuminate\Pipeline\Pipeline::prepareDestination():168}(Object(Illuminate\Http\Request))
#29 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Laravel\Sanctum\Http\Middleware\AuthenticateSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#30 /opt/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(88): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#31 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure))
#32 /opt/app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#33 /opt/app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest(Object(Illuminate\Http\Request), Object(Illuminate\Session\Store), Object(Closure))
#34 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure))
#35 /opt/app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#36 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure))
#37 /opt/app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(75): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#38 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure))
#39 /opt/app/vendor/laravel/sanctum/src/Http/Middleware/EnsureFrontendRequestsAreStateful.php(60): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#40 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(191): Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful->{closure:Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::frontendMiddleware():57}(Object(Illuminate\Http\Request), Object(Closure))
#41 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#42 /opt/app/vendor/laravel/sanctum/src/Http/Middleware/EnsureFrontendRequestsAreStateful.php(24): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#43 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful->handle(Object(Illuminate\Http\Request), Object(Closure))
#44 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#45 /opt/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(807): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#46 /opt/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(786): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request))
#47 /opt/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(750): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route))
#48 /opt/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(739): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#49 /opt/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(201): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#50 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(170): Illuminate\Foundation\Http\Kernel->{closure:Illuminate\Foundation\Http\Kernel::dispatchToRouter():198}(Object(Illuminate\Http\Request))
#51 /opt/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->{closure:Illuminate\Pipeline\Pipeline::prepareDestination():168}(Object(Illuminate\Http\Request))
#52 /opt/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#53 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle(Object(Illuminate\Http\Request), Object(Closure))
#54 /opt/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#55 /opt/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure))
#56 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\TrimStrings->handle(Object(Illuminate\Http\Request), Object(Closure))
#57 /opt/app/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#58 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure))
#59 /opt/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(110): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#60 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure))
#61 /opt/app/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(62): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#62 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Http\Middleware\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure))
#63 /opt/app/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#64 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(209): Illuminate\Http\Middleware\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#65 /opt/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(127): Illuminate\Pipeline\Pipeline->{closure:{closure:Illuminate\Pipeline\Pipeline::carry():184}:185}(Object(Illuminate\Http\Request))
#66 /opt/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#67 /opt/app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(145): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#68 /opt/app/vendor/laravel/octane/src/ApplicationGateway.php(36): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#69 /opt/app/vendor/laravel/octane/src/Worker.php(84): Laravel\Octane\ApplicationGateway->handle(Object(Illuminate\Http\Request))
#70 /opt/app/vendor/laravel/octane/bin/swoole-server(122): Laravel\Octane\Worker->handle(Object(Illuminate\Http\Request), Object(Laravel\Octane\RequestContext))
#71 [internal function]: {closure:/opt/app/vendor/laravel/octane/bin/swoole-server:111}(Object(Swoole\Http\Request), Object(Swoole\Http\Response))
#72 /opt/app/vendor/laravel/octane/bin/swoole-server(172): Swoole\Server->start()
#73 {main}
"}
All reactions