You can instruct init to run only one instance of your software — in fact, that will happen naturally if you start your software from init. But init's job has nothing to do with preventing other programs from starting other instances of your software.
If you want to ensure that only a single instance of your program runs, then instead of running your program directly, run a wrapper script that checks whether your software is already running. LatinSuD's answer gives an example of such a wrapper script.
Of course a user could bypass the wrapper script and run another instance of your software. But a user could also create an executable file that happens to be identical to yours and run that. So going via a wrapper script does implement the desired restriction in a way that makes sense.
Having multiple instances of the same executable running is not in itself a problem. What can be a problem is if they access the same resource: files, network ports, etc. If you need to protect against concurrent access to the same resource, then the possible methods depend on what the resource is. If the resource is a TCP or UDP port, only one process can listen on that port anyway. If the resource is a file, make sure that only the user running the instance started by an init script has the right to access that file.