Security

Token

There is no security token.

Firewall

main Name
Security enabled
Stateless

Configuration

Key Value
provider security.user.provider.concrete.app_user_provider
context main
entry_point App\Security\KbinAuthenticator
user_checker App\Security\UserChecker
access_denied_handler (none)
access_denied_url (none)
authenticators
[
  "two_factor"
  "remember_me"
  "App\Security\KbinAuthenticator"
  "App\Security\FacebookAuthenticator"
  "App\Security\GoogleAuthenticator"
  "App\Security\GithubAuthenticator"
  "App\Security\KeycloakAuthenticator"
]

Listeners

Listener Duration Response
Symfony\Component\Security\Http\Firewall\ChannelListener {#723
  -map: Symfony\Component\Security\Http\AccessMap {#722 …}
  -logger: Monolog\Logger {#783 …}
  -httpPort: 80
  -httpsPort: 443
}
0.00 ms (none)
Symfony\Component\Security\Http\Firewall\ContextListener {#706
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage {#1017 …}
  -sessionKey: "_security_main"
  -logger: Monolog\Logger {#783 …}
  -userProviders: Symfony\Component\DependencyInjection\Argument\RewindableGenerator {#705 …}
  -dispatcher: Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher {#747 …}
  -registered: false
  -trustResolver: Scheb\TwoFactorBundle\Security\Authentication\AuthenticationTrustResolver {#780 …}
  -sessionTrackerEnabler: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage::enableUsageTracking(): void {#703 …}
}
0.82 ms (none)
Symfony\Component\Security\Http\Firewall\AuthenticatorManagerListener {#584
  -authenticatorManager: Symfony\Component\Security\Http\Authentication\AuthenticatorManager {#595 …}
}
0.00 ms (none)
Scheb\TwoFactorBundle\Security\Http\Firewall\TwoFactorAccessListener {#582
  -twoFactorFirewallConfig: Scheb\TwoFactorBundle\Security\TwoFactor\TwoFactorFirewallConfig {#842 …}
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#1018 …}
  -twoFactorAccessDecider: Scheb\TwoFactorBundle\Security\Authorization\TwoFactorAccessDecider {#581 …}
}
0.04 ms (none)
Symfony\Component\Security\Http\Firewall\AccessListener {#579
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#1018 …}
  -accessDecisionManager: Symfony\Component\Security\Core\Authorization\TraceableAccessDecisionManager {#937 …}
  -map: Symfony\Component\Security\Http\AccessMap {#722 …}
}
0.00 ms (none)
Symfony\Component\Security\Http\Firewall\LogoutListener {#786
  -tokenStorage: Symfony\Component\Security\Core\Authentication\Token\Storage\UsageTrackingTokenStorage {#1018 …}
  -options: [
    "csrf_parameter" => "_csrf_token"
    "csrf_token_id" => "logout"
    "logout_path" => "app_logout"
  ]
  -httpUtils: Symfony\Component\Security\Http\HttpUtils {#841 …}
  -csrfTokenManager: Symfony\Component\Security\Csrf\CsrfTokenManager {#1015 …}
  -eventDispatcher: Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher {#747 …}
}
0.00 ms (none)

Authenticators

No authenticators have been recorded. Check previous profiles on your authentication endpoint.

Access Decision

affirmative Strategy
# Voter class
1
"Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter"
2
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
3
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
4
"Symfony\Component\Security\Core\Authorization\Voter\ExpressionVoter"
5
"App\Security\Voter\EntryCommentVoter"
6
"App\Security\Voter\EntryVoter"
7
"App\Security\Voter\MagazineVoter"
8
"App\Security\Voter\MessageThreadVoter"
9
"App\Security\Voter\MessageVoter"
10
"App\Security\Voter\NotificationVoter"
11
"App\Security\Voter\OAuth2UserConsentVoter"
12
"App\Security\Voter\PostCommentVoter"
13
"App\Security\Voter\PostVoter"
14
"App\Security\Voter\UserVoter"

Access decision log

# Result Attributes Object
1 DENIED ROLE_USER
null
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"Symfony\Component\Security\Core\Authorization\Voter\RoleHierarchyVoter"
ACCESS DENIED
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
2 DENIED moderate
App\Entity\EntryComment {#1369
  +user: Proxies\__CG__\App\Entity\User {#1370 …}
  +entry: App\Entity\Entry {#1856 …}
  +magazine: App\Entity\Magazine {#312
    +icon: Proxies\__CG__\App\Entity\Image {#293 …}
    +name: "selfhosted@lemmy.world"
    +title: "selfhosted"
    +description: """
      A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n
      \n
      Rules:\n
      \n
      - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n
      - No spam posting.\n
      - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n
      - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n
      - No trolling.\n
      \n
      Resources:\n
      \n
      - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n
      - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n
      - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n
      \n
      > Any issues on the community? Report it using the report flag.\n
      \n
      > Questions? DM the mods!
      """
    +rules: null
    +subscriptionsCount: 1
    +entryCount: 222
    +entryCommentCount: 3916
    +postCount: 0
    +postCommentCount: 0
    +isAdult: false
    +customCss: null
    +lastActive: DateTime @1729582735 {#320
      date: 2024-10-22 09:38:55.0 +02:00
    }
    +markedForDeletionAt: null
    +tags: null
    +moderators: Doctrine\ORM\PersistentCollection {#284 …}
    +ownershipRequests: Doctrine\ORM\PersistentCollection {#280 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#269 …}
    +entries: Doctrine\ORM\PersistentCollection {#227 …}
    +posts: Doctrine\ORM\PersistentCollection {#185 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#247 …}
    +bans: Doctrine\ORM\PersistentCollection {#164 …}
    +reports: Doctrine\ORM\PersistentCollection {#150 …}
    +badges: Doctrine\ORM\PersistentCollection {#128 …}
    +logs: Doctrine\ORM\PersistentCollection {#118 …}
    +awards: Doctrine\ORM\PersistentCollection {#107 …}
    +categories: Doctrine\ORM\PersistentCollection {#94 …}
    -id: 120
    +apId: "selfhosted@lemmy.world"
    +apProfileId: "https://lemmy.world/c/selfhosted"
    +apPublicUrl: "https://lemmy.world/c/selfhosted"
    +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers"
    +apInboxUrl: "https://lemmy.world/inbox"
    +apDomain: "lemmy.world"
    +apPreferredUsername: "selfhosted"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: null
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1703473826 {#321
      date: 2023-12-25 04:10:26.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1703473826 {#315
      date: 2023-12-25 04:10:26.0 +01:00
    }
  }
  +image: null
  +parent: null
  +root: null
  +body: """
    **Your basic requirements are:**\n
    \n
    - Some kind of domain / subdomain payed or free;\n
    - Preferably Home ISP that has provides public IP addresses - no CGNAT BS;\n
    - Ideally a static IP at home, but you can do just fine with a dynamic DNS service such as [freedns.afraid.org](https://freedns.afraid.org/).\n
    \n
    **Quick setup guide and checklist**:\n
    \n
    1. Create your subdomain for the dynamic DNS service [freedns.afraid.org](https://freedns.afraid.org/) and install the daemon on the server - will update your domain with your dynamic IP when it changes;\n
    2. List what ports you need remote access to;\n
    3. Isolate the server from your main network as much as possible. If possible have then on a different public IP either using a VLAN or better yet with an entire physical network just for that - avoids VLAN hopping attacks and DDoS attacks to the server that will also take your internet down;\n
    4. If you’re using VLANs then configure your switch properly. Decent switches allows you to restrict the WebUI to a certain VLAN / physical port - this will make sure if your server is hacked they won’t be able to access the Switch’s UI and reconfigure their own port to access the entire network. Note that cheap TP-Link switches usually don’t have a way to specify this;\n
    5. Configure your ISP router to assign a static local IP to the server and port forward what’s supposed to be exposed to the internet to the server;\n
    6. Only expose required services (nginx, game server, program x) to the Internet us. Everything else such as SSH, configuration interfaces and whatnot can be moved to another private network and/or a WireGuard VPN you can connect to when you want to manage the server;\n
    7. Use custom ports with 5 digits for everything - something like 23901 (up to 65535) to make your service(s) harder to find;\n
    8. Disable IPv6? Might be easier than dealing with a dual stack firewall and/or other complexities;\n
    9. Use nftables / iptables / another firewall and set it to drop everything but those ports you need for services and management VPN access to work - [10 minute guide](https://wiki.nftables.org/wiki-nftables/index.php/Quick_reference-nftables_in_10_minutes);\n
    10. Configure nftables to only allow traffic coming from public IP addresses (IPs outside your home network IP / VPN range) to the Wireguard or required services port - this will protect your server if by some mistake the router starts forwarding more traffic from the internet to the server than it should;\n
    11. Configure nftables to restrict what countries are allowed to access your server. Most likely you only need to allow incoming connections [from your country](https://wiki.nftables.org/wiki-nftables/index.php/GeoIP_matching) and more [details here](https://lemmy.world/post/11162264).\n
    \n
    Realistically speaking if you’re doing this just for a few friends why not require them to access the server through WireGuard VPN? This will reduce the risk a LOT and won’t probably impact the performance. [Here a decent setup guide](https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-debian-11) and you [might use this GUI](https://github.com/ngoduykhanh/wireguard-ui) to add/remove clients easily.\n
    \n
    Don’t be afraid to expose the Wireguard port because if someone tried to connect and they don’t authenticate with the right key the server will silently drop the packets.\n
    \n
    Now if your ISP doesn’t provide you with a public IP / port forwarding abilities you may want to [read this](https://blog.aiquiral.me/bypass-cgnat#introduction) in order to find why you should avoid Cloudflare tunnels and how to setup and alternative / more private solution.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1706541016 {#1769
    date: 2024-01-29 16:10:16.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
  ]
  +children: Doctrine\ORM\PersistentCollection {#1371 …}
  +nested: Doctrine\ORM\PersistentCollection {#1379 …}
  +votes: Doctrine\ORM\PersistentCollection {#2446 …}
  +reports: Doctrine\ORM\PersistentCollection {#1891 …}
  +favourites: Doctrine\ORM\PersistentCollection {#2409 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2358 …}
  -id: 349945
  -bodyTs: "'/)':65 '/).':47 '/bypass-cgnat#introduction)':559 '/community/tutorials/how-to-set-up-wireguard-on-debian-11)':491 '/ngoduykhanh/wireguard-ui)':500 '/post/11162264).':446 '/wiki-nftables/index.php/geoip_matching)':439 '/wiki-nftables/index.php/quick_reference-nftables_in_10_minutes);':360 '1':53 '10':355,361 '11':412 '2':84 '23901':302 '3':93 '4':146 '5':217,296 '6':246 '65535':305 '7':291 '8':314 '9':330 'abil':550 'abl':184 'access':91,186,197,352,422,464 'add/remove':502 'address':21,372 'afraid':508 'allow':159,366,420,431 'also':141 'altern':575 'and/or':276,327 'anoth':273,334 'assign':223 'attack':132,135 'authent':524 'avoid':129,567 'basic':2 'better':119 'blog.aiquiral.me':558 'blog.aiquiral.me/bypass-cgnat#introduction)':557 'bs':24 'certain':167 'cgnat':23 'chang':83 'cheap':203 'checklist':52 'client':503 'cloudflar':568 'come':368 'complex':329 'configur':153,218,265,362,413 'connect':282,433,519 'countri':418,436 'creat':54 'custom':293 'daemon':69 'ddos':134 'deal':321 'decent':157,486 'detail':442 'differ':111 'digit':297 'disabl':315 'dns':40,60 'doesn':540 'domain':8,76 'drop':340,533 'dual':324 'dynam':39,59,79 'easier':319 'easili':504 'either':114 'els':261 'entir':123,199 'everyth':260,299,341 'expos':239,248,510 'find':313,563 'fine':36 'firewal':326,335 'forward':233,400,549 'free':12 'freedns.afraid.org':44,46,62,64 'freedns.afraid.org/)':63 'freedns.afraid.org/).':45 'friend':458 'game':252 'github.com':499 'github.com/ngoduykhanh/wireguard-ui)':498 'gui':497 'guid':50,357,488 'hack':179 'harder':311 'home':14,30,376 'hop':131 'ideal':25 'impact':481 'incom':432 'instal':67 'interfac':266 'internet':144,242,258,405 'ip':20,28,80,113,227,371,373,378,547 'iptabl':333 'ipv6':316 'isol':94 'isp':15,220,539 'key':528 'kind':6 'lemmy.world':445 'lemmy.world/post/11162264).':444 'like':301,426 'link':206 'list':85 'local':226 'lot':476 'main':99 'make':173,307 'manag':288,350 'may':552 'might':317,494 'minut':356 'mistak':396 'move':271 'much':102 'need':89,346,429 'network':100,125,200,275,377 'nftabl':332,363,414 'nginx':251 'note':201 'order':561 'outsid':374 'packet':535 'pay':10 'perform':483 'physic':124,169 'port':87,170,195,232,294,344,387,513,548 'possibl':104,106 'prefer':13 'privat':274,577 'probabl':480 'program':254 'proper':156 'protect':390 'provid':18,542 'public':19,112,370,546 'quick':48 'rang':380 're':149,451 'read':555 'realist':447 'reconfigur':192 'reduc':472 'remot':90 'requir':3,249,385,461 'restrict':162,416 'right':527 'risk':474 'router':221,398 'server':72,96,138,177,230,245,253,290,392,408,424,466,530 'servic':41,61,250,309,348,386 'set':337 'setup':49,487,573 'silent':532 'solut':578 'someon':516 'someth':300 'speak':448 'specifi':215 'ssh':264 'stack':325 'start':399 'static':27,225 'subdomain':9,56 'suppos':236 'sure':174 'switch':155,158,188,207 'take':142 'tp':205 'tp-link':204 'traffic':367,402 'tri':517 'tunnel':569 'ui':190 'updat':74 'us':259 'use':115,150,292,331,495 'usual':208 'vlan':117,130,151,168 'vpn':279,351,379,469 'want':286,553 'way':213 'webui':164 'whatnot':268 'wiki.nftables.org':359,438 'wiki.nftables.org/wiki-nftables/index.php/geoip_matching)':437 'wiki.nftables.org/wiki-nftables/index.php/quick_reference-nftables_in_10_minutes);':358 'wireguard':278,383,468,512 'won':181,478 'work':354 'www.digitalocean.com':490 'www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-debian-11)':489 'x':255 'yet':120"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/7126969"
  +editedAt: DateTimeImmutable @1729412383 {#1945
    date: 2024-10-20 10:19:43.0 +02:00
  }
  +createdAt: DateTimeImmutable @1706541016 {#1368
    date: 2024-01-29 16:10:16.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
3 DENIED edit
App\Entity\EntryComment {#1369
  +user: Proxies\__CG__\App\Entity\User {#1370 …}
  +entry: App\Entity\Entry {#1856 …}
  +magazine: App\Entity\Magazine {#312
    +icon: Proxies\__CG__\App\Entity\Image {#293 …}
    +name: "selfhosted@lemmy.world"
    +title: "selfhosted"
    +description: """
      A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n
      \n
      Rules:\n
      \n
      - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n
      - No spam posting.\n
      - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n
      - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n
      - No trolling.\n
      \n
      Resources:\n
      \n
      - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n
      - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n
      - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n
      \n
      > Any issues on the community? Report it using the report flag.\n
      \n
      > Questions? DM the mods!
      """
    +rules: null
    +subscriptionsCount: 1
    +entryCount: 222
    +entryCommentCount: 3916
    +postCount: 0
    +postCommentCount: 0
    +isAdult: false
    +customCss: null
    +lastActive: DateTime @1729582735 {#320
      date: 2024-10-22 09:38:55.0 +02:00
    }
    +markedForDeletionAt: null
    +tags: null
    +moderators: Doctrine\ORM\PersistentCollection {#284 …}
    +ownershipRequests: Doctrine\ORM\PersistentCollection {#280 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#269 …}
    +entries: Doctrine\ORM\PersistentCollection {#227 …}
    +posts: Doctrine\ORM\PersistentCollection {#185 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#247 …}
    +bans: Doctrine\ORM\PersistentCollection {#164 …}
    +reports: Doctrine\ORM\PersistentCollection {#150 …}
    +badges: Doctrine\ORM\PersistentCollection {#128 …}
    +logs: Doctrine\ORM\PersistentCollection {#118 …}
    +awards: Doctrine\ORM\PersistentCollection {#107 …}
    +categories: Doctrine\ORM\PersistentCollection {#94 …}
    -id: 120
    +apId: "selfhosted@lemmy.world"
    +apProfileId: "https://lemmy.world/c/selfhosted"
    +apPublicUrl: "https://lemmy.world/c/selfhosted"
    +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers"
    +apInboxUrl: "https://lemmy.world/inbox"
    +apDomain: "lemmy.world"
    +apPreferredUsername: "selfhosted"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: null
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1703473826 {#321
      date: 2023-12-25 04:10:26.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1703473826 {#315
      date: 2023-12-25 04:10:26.0 +01:00
    }
  }
  +image: null
  +parent: null
  +root: null
  +body: """
    **Your basic requirements are:**\n
    \n
    - Some kind of domain / subdomain payed or free;\n
    - Preferably Home ISP that has provides public IP addresses - no CGNAT BS;\n
    - Ideally a static IP at home, but you can do just fine with a dynamic DNS service such as [freedns.afraid.org](https://freedns.afraid.org/).\n
    \n
    **Quick setup guide and checklist**:\n
    \n
    1. Create your subdomain for the dynamic DNS service [freedns.afraid.org](https://freedns.afraid.org/) and install the daemon on the server - will update your domain with your dynamic IP when it changes;\n
    2. List what ports you need remote access to;\n
    3. Isolate the server from your main network as much as possible. If possible have then on a different public IP either using a VLAN or better yet with an entire physical network just for that - avoids VLAN hopping attacks and DDoS attacks to the server that will also take your internet down;\n
    4. If you’re using VLANs then configure your switch properly. Decent switches allows you to restrict the WebUI to a certain VLAN / physical port - this will make sure if your server is hacked they won’t be able to access the Switch’s UI and reconfigure their own port to access the entire network. Note that cheap TP-Link switches usually don’t have a way to specify this;\n
    5. Configure your ISP router to assign a static local IP to the server and port forward what’s supposed to be exposed to the internet to the server;\n
    6. Only expose required services (nginx, game server, program x) to the Internet us. Everything else such as SSH, configuration interfaces and whatnot can be moved to another private network and/or a WireGuard VPN you can connect to when you want to manage the server;\n
    7. Use custom ports with 5 digits for everything - something like 23901 (up to 65535) to make your service(s) harder to find;\n
    8. Disable IPv6? Might be easier than dealing with a dual stack firewall and/or other complexities;\n
    9. Use nftables / iptables / another firewall and set it to drop everything but those ports you need for services and management VPN access to work - [10 minute guide](https://wiki.nftables.org/wiki-nftables/index.php/Quick_reference-nftables_in_10_minutes);\n
    10. Configure nftables to only allow traffic coming from public IP addresses (IPs outside your home network IP / VPN range) to the Wireguard or required services port - this will protect your server if by some mistake the router starts forwarding more traffic from the internet to the server than it should;\n
    11. Configure nftables to restrict what countries are allowed to access your server. Most likely you only need to allow incoming connections [from your country](https://wiki.nftables.org/wiki-nftables/index.php/GeoIP_matching) and more [details here](https://lemmy.world/post/11162264).\n
    \n
    Realistically speaking if you’re doing this just for a few friends why not require them to access the server through WireGuard VPN? This will reduce the risk a LOT and won’t probably impact the performance. [Here a decent setup guide](https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-debian-11) and you [might use this GUI](https://github.com/ngoduykhanh/wireguard-ui) to add/remove clients easily.\n
    \n
    Don’t be afraid to expose the Wireguard port because if someone tried to connect and they don’t authenticate with the right key the server will silently drop the packets.\n
    \n
    Now if your ISP doesn’t provide you with a public IP / port forwarding abilities you may want to [read this](https://blog.aiquiral.me/bypass-cgnat#introduction) in order to find why you should avoid Cloudflare tunnels and how to setup and alternative / more private solution.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1706541016 {#1769
    date: 2024-01-29 16:10:16.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
  ]
  +children: Doctrine\ORM\PersistentCollection {#1371 …}
  +nested: Doctrine\ORM\PersistentCollection {#1379 …}
  +votes: Doctrine\ORM\PersistentCollection {#2446 …}
  +reports: Doctrine\ORM\PersistentCollection {#1891 …}
  +favourites: Doctrine\ORM\PersistentCollection {#2409 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2358 …}
  -id: 349945
  -bodyTs: "'/)':65 '/).':47 '/bypass-cgnat#introduction)':559 '/community/tutorials/how-to-set-up-wireguard-on-debian-11)':491 '/ngoduykhanh/wireguard-ui)':500 '/post/11162264).':446 '/wiki-nftables/index.php/geoip_matching)':439 '/wiki-nftables/index.php/quick_reference-nftables_in_10_minutes);':360 '1':53 '10':355,361 '11':412 '2':84 '23901':302 '3':93 '4':146 '5':217,296 '6':246 '65535':305 '7':291 '8':314 '9':330 'abil':550 'abl':184 'access':91,186,197,352,422,464 'add/remove':502 'address':21,372 'afraid':508 'allow':159,366,420,431 'also':141 'altern':575 'and/or':276,327 'anoth':273,334 'assign':223 'attack':132,135 'authent':524 'avoid':129,567 'basic':2 'better':119 'blog.aiquiral.me':558 'blog.aiquiral.me/bypass-cgnat#introduction)':557 'bs':24 'certain':167 'cgnat':23 'chang':83 'cheap':203 'checklist':52 'client':503 'cloudflar':568 'come':368 'complex':329 'configur':153,218,265,362,413 'connect':282,433,519 'countri':418,436 'creat':54 'custom':293 'daemon':69 'ddos':134 'deal':321 'decent':157,486 'detail':442 'differ':111 'digit':297 'disabl':315 'dns':40,60 'doesn':540 'domain':8,76 'drop':340,533 'dual':324 'dynam':39,59,79 'easier':319 'easili':504 'either':114 'els':261 'entir':123,199 'everyth':260,299,341 'expos':239,248,510 'find':313,563 'fine':36 'firewal':326,335 'forward':233,400,549 'free':12 'freedns.afraid.org':44,46,62,64 'freedns.afraid.org/)':63 'freedns.afraid.org/).':45 'friend':458 'game':252 'github.com':499 'github.com/ngoduykhanh/wireguard-ui)':498 'gui':497 'guid':50,357,488 'hack':179 'harder':311 'home':14,30,376 'hop':131 'ideal':25 'impact':481 'incom':432 'instal':67 'interfac':266 'internet':144,242,258,405 'ip':20,28,80,113,227,371,373,378,547 'iptabl':333 'ipv6':316 'isol':94 'isp':15,220,539 'key':528 'kind':6 'lemmy.world':445 'lemmy.world/post/11162264).':444 'like':301,426 'link':206 'list':85 'local':226 'lot':476 'main':99 'make':173,307 'manag':288,350 'may':552 'might':317,494 'minut':356 'mistak':396 'move':271 'much':102 'need':89,346,429 'network':100,125,200,275,377 'nftabl':332,363,414 'nginx':251 'note':201 'order':561 'outsid':374 'packet':535 'pay':10 'perform':483 'physic':124,169 'port':87,170,195,232,294,344,387,513,548 'possibl':104,106 'prefer':13 'privat':274,577 'probabl':480 'program':254 'proper':156 'protect':390 'provid':18,542 'public':19,112,370,546 'quick':48 'rang':380 're':149,451 'read':555 'realist':447 'reconfigur':192 'reduc':472 'remot':90 'requir':3,249,385,461 'restrict':162,416 'right':527 'risk':474 'router':221,398 'server':72,96,138,177,230,245,253,290,392,408,424,466,530 'servic':41,61,250,309,348,386 'set':337 'setup':49,487,573 'silent':532 'solut':578 'someon':516 'someth':300 'speak':448 'specifi':215 'ssh':264 'stack':325 'start':399 'static':27,225 'subdomain':9,56 'suppos':236 'sure':174 'switch':155,158,188,207 'take':142 'tp':205 'tp-link':204 'traffic':367,402 'tri':517 'tunnel':569 'ui':190 'updat':74 'us':259 'use':115,150,292,331,495 'usual':208 'vlan':117,130,151,168 'vpn':279,351,379,469 'want':286,553 'way':213 'webui':164 'whatnot':268 'wiki.nftables.org':359,438 'wiki.nftables.org/wiki-nftables/index.php/geoip_matching)':437 'wiki.nftables.org/wiki-nftables/index.php/quick_reference-nftables_in_10_minutes);':358 'wireguard':278,383,468,512 'won':181,478 'work':354 'www.digitalocean.com':490 'www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-debian-11)':489 'x':255 'yet':120"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/7126969"
  +editedAt: DateTimeImmutable @1729412383 {#1945
    date: 2024-10-20 10:19:43.0 +02:00
  }
  +createdAt: DateTimeImmutable @1706541016 {#1368
    date: 2024-01-29 16:10:16.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
4 DENIED moderate
App\Entity\EntryComment {#1369
  +user: Proxies\__CG__\App\Entity\User {#1370 …}
  +entry: App\Entity\Entry {#1856 …}
  +magazine: App\Entity\Magazine {#312
    +icon: Proxies\__CG__\App\Entity\Image {#293 …}
    +name: "selfhosted@lemmy.world"
    +title: "selfhosted"
    +description: """
      A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n
      \n
      Rules:\n
      \n
      - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n
      - No spam posting.\n
      - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n
      - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n
      - No trolling.\n
      \n
      Resources:\n
      \n
      - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n
      - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n
      - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n
      \n
      > Any issues on the community? Report it using the report flag.\n
      \n
      > Questions? DM the mods!
      """
    +rules: null
    +subscriptionsCount: 1
    +entryCount: 222
    +entryCommentCount: 3916
    +postCount: 0
    +postCommentCount: 0
    +isAdult: false
    +customCss: null
    +lastActive: DateTime @1729582735 {#320
      date: 2024-10-22 09:38:55.0 +02:00
    }
    +markedForDeletionAt: null
    +tags: null
    +moderators: Doctrine\ORM\PersistentCollection {#284 …}
    +ownershipRequests: Doctrine\ORM\PersistentCollection {#280 …}
    +moderatorRequests: Doctrine\ORM\PersistentCollection {#269 …}
    +entries: Doctrine\ORM\PersistentCollection {#227 …}
    +posts: Doctrine\ORM\PersistentCollection {#185 …}
    +subscriptions: Doctrine\ORM\PersistentCollection {#247 …}
    +bans: Doctrine\ORM\PersistentCollection {#164 …}
    +reports: Doctrine\ORM\PersistentCollection {#150 …}
    +badges: Doctrine\ORM\PersistentCollection {#128 …}
    +logs: Doctrine\ORM\PersistentCollection {#118 …}
    +awards: Doctrine\ORM\PersistentCollection {#107 …}
    +categories: Doctrine\ORM\PersistentCollection {#94 …}
    -id: 120
    +apId: "selfhosted@lemmy.world"
    +apProfileId: "https://lemmy.world/c/selfhosted"
    +apPublicUrl: "https://lemmy.world/c/selfhosted"
    +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers"
    +apInboxUrl: "https://lemmy.world/inbox"
    +apDomain: "lemmy.world"
    +apPreferredUsername: "selfhosted"
    +apDiscoverable: true
    +apManuallyApprovesFollowers: null
    +privateKey: null
    +publicKey: null
    +apFetchedAt: DateTime @1703473826 {#321
      date: 2023-12-25 04:10:26.0 +01:00
    }
    +apDeletedAt: null
    +apTimeoutAt: null
    +visibility: "visible             "
    +createdAt: DateTimeImmutable @1703473826 {#315
      date: 2023-12-25 04:10:26.0 +01:00
    }
  }
  +image: null
  +parent: null
  +root: null
  +body: """
    **Your basic requirements are:**\n
    \n
    - Some kind of domain / subdomain payed or free;\n
    - Preferably Home ISP that has provides public IP addresses - no CGNAT BS;\n
    - Ideally a static IP at home, but you can do just fine with a dynamic DNS service such as [freedns.afraid.org](https://freedns.afraid.org/).\n
    \n
    **Quick setup guide and checklist**:\n
    \n
    1. Create your subdomain for the dynamic DNS service [freedns.afraid.org](https://freedns.afraid.org/) and install the daemon on the server - will update your domain with your dynamic IP when it changes;\n
    2. List what ports you need remote access to;\n
    3. Isolate the server from your main network as much as possible. If possible have then on a different public IP either using a VLAN or better yet with an entire physical network just for that - avoids VLAN hopping attacks and DDoS attacks to the server that will also take your internet down;\n
    4. If you’re using VLANs then configure your switch properly. Decent switches allows you to restrict the WebUI to a certain VLAN / physical port - this will make sure if your server is hacked they won’t be able to access the Switch’s UI and reconfigure their own port to access the entire network. Note that cheap TP-Link switches usually don’t have a way to specify this;\n
    5. Configure your ISP router to assign a static local IP to the server and port forward what’s supposed to be exposed to the internet to the server;\n
    6. Only expose required services (nginx, game server, program x) to the Internet us. Everything else such as SSH, configuration interfaces and whatnot can be moved to another private network and/or a WireGuard VPN you can connect to when you want to manage the server;\n
    7. Use custom ports with 5 digits for everything - something like 23901 (up to 65535) to make your service(s) harder to find;\n
    8. Disable IPv6? Might be easier than dealing with a dual stack firewall and/or other complexities;\n
    9. Use nftables / iptables / another firewall and set it to drop everything but those ports you need for services and management VPN access to work - [10 minute guide](https://wiki.nftables.org/wiki-nftables/index.php/Quick_reference-nftables_in_10_minutes);\n
    10. Configure nftables to only allow traffic coming from public IP addresses (IPs outside your home network IP / VPN range) to the Wireguard or required services port - this will protect your server if by some mistake the router starts forwarding more traffic from the internet to the server than it should;\n
    11. Configure nftables to restrict what countries are allowed to access your server. Most likely you only need to allow incoming connections [from your country](https://wiki.nftables.org/wiki-nftables/index.php/GeoIP_matching) and more [details here](https://lemmy.world/post/11162264).\n
    \n
    Realistically speaking if you’re doing this just for a few friends why not require them to access the server through WireGuard VPN? This will reduce the risk a LOT and won’t probably impact the performance. [Here a decent setup guide](https://www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-debian-11) and you [might use this GUI](https://github.com/ngoduykhanh/wireguard-ui) to add/remove clients easily.\n
    \n
    Don’t be afraid to expose the Wireguard port because if someone tried to connect and they don’t authenticate with the right key the server will silently drop the packets.\n
    \n
    Now if your ISP doesn’t provide you with a public IP / port forwarding abilities you may want to [read this](https://blog.aiquiral.me/bypass-cgnat#introduction) in order to find why you should avoid Cloudflare tunnels and how to setup and alternative / more private solution.
    """
  +lang: "en"
  +isAdult: false
  +favouriteCount: 3
  +score: 0
  +lastActive: DateTime @1706541016 {#1769
    date: 2024-01-29 16:10:16.0 +01:00
  }
  +ip: null
  +tags: null
  +mentions: [
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
    "@Nester@feddit.uk"
  ]
  +children: Doctrine\ORM\PersistentCollection {#1371 …}
  +nested: Doctrine\ORM\PersistentCollection {#1379 …}
  +votes: Doctrine\ORM\PersistentCollection {#2446 …}
  +reports: Doctrine\ORM\PersistentCollection {#1891 …}
  +favourites: Doctrine\ORM\PersistentCollection {#2409 …}
  +notifications: Doctrine\ORM\PersistentCollection {#2358 …}
  -id: 349945
  -bodyTs: "'/)':65 '/).':47 '/bypass-cgnat#introduction)':559 '/community/tutorials/how-to-set-up-wireguard-on-debian-11)':491 '/ngoduykhanh/wireguard-ui)':500 '/post/11162264).':446 '/wiki-nftables/index.php/geoip_matching)':439 '/wiki-nftables/index.php/quick_reference-nftables_in_10_minutes);':360 '1':53 '10':355,361 '11':412 '2':84 '23901':302 '3':93 '4':146 '5':217,296 '6':246 '65535':305 '7':291 '8':314 '9':330 'abil':550 'abl':184 'access':91,186,197,352,422,464 'add/remove':502 'address':21,372 'afraid':508 'allow':159,366,420,431 'also':141 'altern':575 'and/or':276,327 'anoth':273,334 'assign':223 'attack':132,135 'authent':524 'avoid':129,567 'basic':2 'better':119 'blog.aiquiral.me':558 'blog.aiquiral.me/bypass-cgnat#introduction)':557 'bs':24 'certain':167 'cgnat':23 'chang':83 'cheap':203 'checklist':52 'client':503 'cloudflar':568 'come':368 'complex':329 'configur':153,218,265,362,413 'connect':282,433,519 'countri':418,436 'creat':54 'custom':293 'daemon':69 'ddos':134 'deal':321 'decent':157,486 'detail':442 'differ':111 'digit':297 'disabl':315 'dns':40,60 'doesn':540 'domain':8,76 'drop':340,533 'dual':324 'dynam':39,59,79 'easier':319 'easili':504 'either':114 'els':261 'entir':123,199 'everyth':260,299,341 'expos':239,248,510 'find':313,563 'fine':36 'firewal':326,335 'forward':233,400,549 'free':12 'freedns.afraid.org':44,46,62,64 'freedns.afraid.org/)':63 'freedns.afraid.org/).':45 'friend':458 'game':252 'github.com':499 'github.com/ngoduykhanh/wireguard-ui)':498 'gui':497 'guid':50,357,488 'hack':179 'harder':311 'home':14,30,376 'hop':131 'ideal':25 'impact':481 'incom':432 'instal':67 'interfac':266 'internet':144,242,258,405 'ip':20,28,80,113,227,371,373,378,547 'iptabl':333 'ipv6':316 'isol':94 'isp':15,220,539 'key':528 'kind':6 'lemmy.world':445 'lemmy.world/post/11162264).':444 'like':301,426 'link':206 'list':85 'local':226 'lot':476 'main':99 'make':173,307 'manag':288,350 'may':552 'might':317,494 'minut':356 'mistak':396 'move':271 'much':102 'need':89,346,429 'network':100,125,200,275,377 'nftabl':332,363,414 'nginx':251 'note':201 'order':561 'outsid':374 'packet':535 'pay':10 'perform':483 'physic':124,169 'port':87,170,195,232,294,344,387,513,548 'possibl':104,106 'prefer':13 'privat':274,577 'probabl':480 'program':254 'proper':156 'protect':390 'provid':18,542 'public':19,112,370,546 'quick':48 'rang':380 're':149,451 'read':555 'realist':447 'reconfigur':192 'reduc':472 'remot':90 'requir':3,249,385,461 'restrict':162,416 'right':527 'risk':474 'router':221,398 'server':72,96,138,177,230,245,253,290,392,408,424,466,530 'servic':41,61,250,309,348,386 'set':337 'setup':49,487,573 'silent':532 'solut':578 'someon':516 'someth':300 'speak':448 'specifi':215 'ssh':264 'stack':325 'start':399 'static':27,225 'subdomain':9,56 'suppos':236 'sure':174 'switch':155,158,188,207 'take':142 'tp':205 'tp-link':204 'traffic':367,402 'tri':517 'tunnel':569 'ui':190 'updat':74 'us':259 'use':115,150,292,331,495 'usual':208 'vlan':117,130,151,168 'vpn':279,351,379,469 'want':286,553 'way':213 'webui':164 'whatnot':268 'wiki.nftables.org':359,438 'wiki.nftables.org/wiki-nftables/index.php/geoip_matching)':437 'wiki.nftables.org/wiki-nftables/index.php/quick_reference-nftables_in_10_minutes);':358 'wireguard':278,383,468,512 'won':181,478 'work':354 'www.digitalocean.com':490 'www.digitalocean.com/community/tutorials/how-to-set-up-wireguard-on-debian-11)':489 'x':255 'yet':120"
  +ranking: 0
  +commentCount: 0
  +upVotes: 0
  +downVotes: 0
  +visibility: "visible             "
  +apId: "https://lemmy.world/comment/7126969"
  +editedAt: DateTimeImmutable @1729412383 {#1945
    date: 2024-10-20 10:19:43.0 +02:00
  }
  +createdAt: DateTimeImmutable @1706541016 {#1368
    date: 2024-01-29 16:10:16.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS DENIED
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details
5 DENIED edit
App\Entity\Magazine {#312
  +icon: Proxies\__CG__\App\Entity\Image {#293 …}
  +name: "selfhosted@lemmy.world"
  +title: "selfhosted"
  +description: """
    A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don’t control.\n
    \n
    Rules:\n
    \n
    - Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.\n
    - No spam posting.\n
    - Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.\n
    - Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).\n
    - No trolling.\n
    \n
    Resources:\n
    \n
    - [awesome-selfhosted software](https://github.com/awesome-selfhosted/awesome-selfhosted)\n
    - [awesome-sysadmin](https://github.com/awesome-foss/awesome-sysadmin) resources\n
    - [Self-Hosted Podcast from Jupiter Broadcasting](https://selfhosted.show)\n
    \n
    > Any issues on the community? Report it using the report flag.\n
    \n
    > Questions? DM the mods!
    """
  +rules: null
  +subscriptionsCount: 1
  +entryCount: 222
  +entryCommentCount: 3916
  +postCount: 0
  +postCommentCount: 0
  +isAdult: false
  +customCss: null
  +lastActive: DateTime @1729582735 {#320
    date: 2024-10-22 09:38:55.0 +02:00
  }
  +markedForDeletionAt: null
  +tags: null
  +moderators: Doctrine\ORM\PersistentCollection {#284 …}
  +ownershipRequests: Doctrine\ORM\PersistentCollection {#280 …}
  +moderatorRequests: Doctrine\ORM\PersistentCollection {#269 …}
  +entries: Doctrine\ORM\PersistentCollection {#227 …}
  +posts: Doctrine\ORM\PersistentCollection {#185 …}
  +subscriptions: Doctrine\ORM\PersistentCollection {#247 …}
  +bans: Doctrine\ORM\PersistentCollection {#164 …}
  +reports: Doctrine\ORM\PersistentCollection {#150 …}
  +badges: Doctrine\ORM\PersistentCollection {#128 …}
  +logs: Doctrine\ORM\PersistentCollection {#118 …}
  +awards: Doctrine\ORM\PersistentCollection {#107 …}
  +categories: Doctrine\ORM\PersistentCollection {#94 …}
  -id: 120
  +apId: "selfhosted@lemmy.world"
  +apProfileId: "https://lemmy.world/c/selfhosted"
  +apPublicUrl: "https://lemmy.world/c/selfhosted"
  +apFollowersUrl: "https://lemmy.world/c/selfhosted/followers"
  +apInboxUrl: "https://lemmy.world/inbox"
  +apDomain: "lemmy.world"
  +apPreferredUsername: "selfhosted"
  +apDiscoverable: true
  +apManuallyApprovesFollowers: null
  +privateKey: null
  +publicKey: null
  +apFetchedAt: DateTime @1703473826 {#321
    date: 2023-12-25 04:10:26.0 +01:00
  }
  +apDeletedAt: null
  +apTimeoutAt: null
  +visibility: "visible             "
  +createdAt: DateTimeImmutable @1703473826 {#315
    date: 2023-12-25 04:10:26.0 +01:00
  }
}
"Scheb\TwoFactorBundle\Security\Authorization\Voter\TwoFactorInProgressVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\EntryVoter"
ACCESS ABSTAIN
"App\Security\Voter\MagazineVoter"
ACCESS DENIED
"App\Security\Voter\MessageThreadVoter"
ACCESS ABSTAIN
"App\Security\Voter\MessageVoter"
ACCESS ABSTAIN
"App\Security\Voter\NotificationVoter"
ACCESS ABSTAIN
"App\Security\Voter\OAuth2UserConsentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostCommentVoter"
ACCESS ABSTAIN
"App\Security\Voter\PostVoter"
ACCESS ABSTAIN
"App\Security\Voter\UserVoter"
ACCESS ABSTAIN
Show voter details